Sarvam
La classe SarvamVoice de Mastra fournit des fonctionnalités de synthèse vocale et de transcription vocale à l'aide des modèles Sarvam AI.
Exemple d'utilisationLien direct vers Exemple d'utilisation
import { SarvamVoice } from '@mastra/voice-sarvam'
// Initialize with default configuration using environment variables
const voice = new SarvamVoice()
// Or initialize with specific configuration
const voiceWithConfig = new SarvamVoice({
speechModel: {
model: 'bulbul:v3',
apiKey: process.env.SARVAM_API_KEY!,
language: 'en-IN',
properties: {
pace: 1.0,
temperature: 0.6,
speech_sample_rate: 24000,
output_audio_codec: 'wav',
},
},
listeningModel: {
model: 'saarika:v2.5',
apiKey: process.env.SARVAM_API_KEY!,
languageCode: 'en-IN',
filetype: 'wav',
},
speaker: 'shubh', // Default voice for bulbul:v3
})
// Convert text to speech
const audioStream = await voice.speak('Hello, how can I help you?')
// Convert speech to text
const text = await voice.listen(audioStream, {
filetype: 'wav',
})
Documentation de l'API Sarvam -Lien direct vers Documentation de l'API Sarvam -
https://docs.sarvam.ai/api-reference-docs/text-to-speech/convert
ConfigurationLien direct vers Configuration
Options du constructeurLien direct vers Options du constructeur
speechModel?:
SarvamVoiceConfig
= { model: 'bulbul:v3', language: 'en-IN' }
Configuration de la synthèse vocale.
SarvamVoiceConfig
apiKey?:
string
Clé API Sarvam. Utilise par défaut la variable d’environnement SARVAM_API_KEY.
model?:
SarvamTTSModel
Indique le modèle à utiliser pour la synthèse vocale. Options disponibles : bulbul:v2, bulbul:v3, bulbul:v3-beta. bulbul:v3-beta est une variante bêta de bulbul:v3 qui partage le même catalogue de locuteurs. Remarque : bulbul:v1 a été abandonné par Sarvam et n’est plus pris en charge.
language:
SarvamTTSLanguage
Langue cible de la synthèse vocale. Options disponibles : hi-IN, bn-IN, kn-IN, ml-IN, mr-IN, od-IN, pa-IN, ta-IN, te-IN, en-IN, gu-IN
properties?:
object
Propriétés vocales supplémentaires pour la personnalisation.
properties.pace?:
number
Contrôle la vitesse de l’audio. Pris en charge par bulbul:v2 (plage 0.3–3.0) et bulbul:v3 (plage 0.5–2.0).
properties.temperature?:
number
Température d’échantillonnage qui contrôle le caractère aléatoire de la voix générée. bulbul:v3 uniquement. Plage : 0.01–2.0. Valeur par défaut : 0.6.
properties.dict_id?:
string
ID du dictionnaire de prononciation. bulbul:v3 uniquement.
properties.pitch?:
number
Contrôle la hauteur de l’audio. Les valeurs faibles produisent une voix plus grave, tandis que les valeurs élevées la rendent plus aiguë. bulbul:v2 uniquement. Plage : -0.75 à 0.75.
properties.loudness?:
number
Contrôle le volume de l’audio. bulbul:v2 uniquement. Plage : 0.3 à 3.0.
properties.enable_preprocessing?:
boolean
Active la normalisation des mots anglais et des entités numériques (nombres, dates, etc.). bulbul:v2 uniquement. La valeur par défaut est false.
properties.speech_sample_rate?:
8000 | 16000 | 22050 | 24000 | 32000 | 44100 | 48000
Fréquence d’échantillonnage audio en Hz.
properties.output_audio_codec?:
'mp3' | 'wav' | 'linear16' | 'mulaw' | 'alaw' | 'opus' | 'flac' | 'aac'
Codec audio de sortie.
speaker?:
SarvamVoiceId
= 'shubh'
Locuteur à utiliser pour l’audio de sortie. Valeur par défaut : 'shubh'. bulbul:v3 prend en charge 39 voix (shubh, aditya, ritu, priya, neha, rahul, pooja, rohan, simran, kavya, amit, dev, ishita, shreya, ratan, varun, manan, sumit, roopa, kabir, aayan, ashutosh, advait, amelia, sophia, anand, tanya, tarun, sunny, mani, gokul, vijay, shruti, suhani, mohit, kavitha, rehan, soham, rupali). bulbul:v2 prend en charge 7 voix (anushka, manisha, vidya, arya, abhilash, karun, hitesh). Les locuteurs ne sont pas interchangeables entre les versions du modèle.
listeningModel?:
SarvamListenOptions
= { model: 'saarika:v2.5', languageCode: 'unknown' }
Configuration de la transcription vocale.
SarvamListenOptions
apiKey?:
string
Clé API Sarvam. Utilise par défaut la variable d’environnement SARVAM_API_KEY.
model?:
SarvamSTTModel
Indique le modèle à utiliser pour la transcription vocale. Options disponibles : saarika:v2.5 (transcription), saaras:v3 (multimode : transcribe/translate/verbatim/translit/codemix). Remarque : saarika:v1, saarika:v2 et saarika:flash ont été abandonnés par Sarvam.
languageCode?:
SarvamSTTLanguage
Code de langue BCP-47 de l’audio d’entrée. Facultatif pour saarika:v2.5 et saaras:v3 (l’API détecte automatiquement la langue lorsque 'unknown' est transmis). Options disponibles : unknown, hi-IN, bn-IN, kn-IN, ml-IN, mr-IN, od-IN, pa-IN, ta-IN, te-IN, en-IN, gu-IN.
filetype?:
'mp3' | 'wav'
Format audio du stream d’entrée.
mode?:
SarvamSTTMode
Mode de fonctionnement. Valide uniquement avec le modèle saaras:v3 ; ignoré par saarika:v2.5. Options disponibles : 'transcribe', 'translate', 'verbatim', 'translit', 'codemix'.
MéthodesLien direct vers Méthodes
speak()Lien direct vers speak
Convertit du texte en parole à l'aide des modèles de synthèse vocale de Sarvam.
input:
string | NodeJS.ReadableStream
Texte ou stream textuel à convertir en parole.
options?:
Options
Options de configuration.
Options
speaker?:
SarvamVoiceId
ID de voix à utiliser pour la synthèse vocale.
Renvoie : Promise<NodeJS.ReadableStream>
listen()Lien direct vers listen
Transcrit l'audio à l'aide des modèles de reconnaissance vocale de Sarvam.
input:
NodeJS.ReadableStream
Stream audio à transcrire.
options?:
SarvamListenOptions
Options de configuration de la reconnaissance vocale.
Renvoie : Promise<string>
getSpeakers()Lien direct vers getspeakers
Renvoie un tableau des options vocales disponibles.
Renvoie : Promise<Array<{voiceId: SarvamVoiceId}>>
RemarquesLien direct vers Remarques
- La clé API peut être fournie dans les options du constructeur ou à l'aide de la variable d'environnement
SARVAM_API_KEY - Si aucune clé API n'est fournie, le constructeur lève une erreur
- Le service communique avec l'API Sarvam AI à l'adresse
https://api.sarvam.ai - L'audio est renvoyé sous forme de stream contenant des données audio binaires
- La reconnaissance vocale prend en charge les formats audio mp3 et wav
bulbul:v1,saarika:v1,saarika:v2etsaarika:flashont été abandonnés par Sarvam et ne sont plus pris en charge. Utilisezbulbul:v3(oubulbul:v2) pour la TTS etsaarika:v2.5(ousaaras:v3) pour la STT.- Les noms de locuteurs ne sont pas interchangeables entre
bulbul:v2etbulbul:v3. Chaque version du modèle possède son propre catalogue de locuteurs.