> Discover all available pages from the documentation index: https://mastra.zisheng.pro/fr/llms.txt # 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'utilisation ```typescript 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 - ## Configuration ### Options du constructeur **speechModel** (`SarvamVoiceConfig`): Configuration de la synthèse vocale. (Default: `{ model: 'bulbul:v3', language: 'en-IN' }`) **speechModel.apiKey** (`string`): Clé API Sarvam. Utilise par défaut la variable d’environnement SARVAM\_API\_KEY. **speechModel.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. **speechModel.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 **speechModel.properties** (`object`): Propriétés vocales supplémentaires pour la personnalisation. **speechModel.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). **speechModel.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. **speechModel.properties.dict\_id** (`string`): ID du dictionnaire de prononciation. bulbul:v3 uniquement. **speechModel.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. **speechModel.properties.loudness** (`number`): Contrôle le volume de l’audio. bulbul:v2 uniquement. Plage : 0.3 à 3.0. **speechModel.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. **speechModel.properties.speech\_sample\_rate** (`8000 | 16000 | 22050 | 24000 | 32000 | 44100 | 48000`): Fréquence d’échantillonnage audio en Hz. **speechModel.properties.output\_audio\_codec** (`'mp3' | 'wav' | 'linear16' | 'mulaw' | 'alaw' | 'opus' | 'flac' | 'aac'`): Codec audio de sortie. **speaker** (`SarvamVoiceId`): 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. (Default: `'shubh'`) **listeningModel** (`SarvamListenOptions`): Configuration de la transcription vocale. (Default: `{ model: 'saarika:v2.5', languageCode: 'unknown' }`) **listeningModel.apiKey** (`string`): Clé API Sarvam. Utilise par défaut la variable d’environnement SARVAM\_API\_KEY. **listeningModel.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. **listeningModel.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. **listeningModel.filetype** (`'mp3' | 'wav'`): Format audio du stream d’entrée. **listeningModel.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éthodes ### `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` ### `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` ### `getSpeakers()` Renvoie un tableau des options vocales disponibles. Renvoie : `Promise>` ## 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:v2` et `saarika:flash` ont été abandonnés par Sarvam et ne sont plus pris en charge. Utilisez `bulbul:v3` (ou `bulbul:v2`) pour la TTS et `saarika:v2.5` (ou `saaras:v3`) pour la STT. - Les noms de locuteurs ne sont pas interchangeables entre `bulbul:v2` et `bulbul:v3`. Chaque version du modèle possède son propre catalogue de locuteurs.