> Discover all available pages from the documentation index: https://mastra.zisheng.pro/fr/llms.txt # CompositeVoice La classe CompositeVoice permet de combiner différents Providers vocaux pour les opérations de synthèse et de transcription vocales. Cette possibilité est particulièrement utile lorsque vous souhaitez choisir le meilleur Provider pour chaque opération, par exemple OpenAI pour la transcription vocale et PlayAI pour la synthèse vocale. CompositeVoice prend en charge les Providers vocaux de Mastra et les Providers de modèles AI SDK. ## Paramètres du constructeur **config** (`object`): Objet de configuration du service vocal composite **config.input** (`MastraVoice | TranscriptionModel`): Provider vocal ou modèle de transcription AI SDK à utiliser pour les opérations de transcription vocale. Les modèles AI SDK sont automatiquement encapsulés. **config.output** (`MastraVoice | SpeechModel`): Provider vocal ou modèle de synthèse AI SDK à utiliser pour les opérations de synthèse vocale. Les modèles AI SDK sont automatiquement encapsulés. **config.realtime** (`MastraVoice`): Provider vocal à utiliser pour les opérations de conversion parole-parole en temps réel ## Méthodes ### `speak()` Convertit du texte en parole à l’aide du Provider de synthèse configuré. **input** (`string | NodeJS.ReadableStream`): Texte à convertir en parole **options** (`object`): Options propres au Provider transmises au Provider de synthèse Remarques : - Si aucun Provider de synthèse n’est configuré, cette méthode lève une erreur - Les options sont transmises au Provider de synthèse configuré - Renvoie un flux de données audio ### `listen()` Convertit la parole en texte à l’aide du Provider de transcription configuré. **audioStream** (`NodeJS.ReadableStream`): Flux audio à convertir en texte **options** (`object`): Options propres au Provider transmises au Provider de transcription Remarques : - Si aucun Provider de transcription n’est configuré, cette méthode lève une erreur - Les options sont transmises au Provider de transcription configuré - Renvoie une chaîne ou un flux de texte transcrit, selon le Provider ### `getSpeakers()` Renvoie une liste des voix disponibles auprès du Provider de synthèse, dans laquelle chaque élément contient : **voiceId** (`string`): Identifiant unique de la voix **key** (`value`): Propriétés supplémentaires de la voix qui varient selon le Provider (par exemple, nom et langue) Remarques : - Renvoie uniquement les voix du Provider de synthèse - Si aucun Provider de synthèse n’est configuré, renvoie un tableau vide - Chaque objet de voix possède au moins une propriété voiceId - Les propriétés supplémentaires de la voix dépendent du Provider de synthèse ## Exemples d’utilisation ### Utiliser des Providers vocaux Mastra ```typescript import { CompositeVoice } from '@mastra/core/voice' import { OpenAIVoice } from '@mastra/voice-openai' import { PlayAIVoice } from '@mastra/voice-playai' // Create voice providers const openai = new OpenAIVoice() const playai = new PlayAIVoice() // Use OpenAI for listening (speech-to-text) and PlayAI for speaking (text-to-speech) const voice = new CompositeVoice({ input: openai, output: playai, }) // Convert speech to text using OpenAI const text = await voice.listen(audioStream) // Convert text to speech using PlayAI const audio = await voice.speak('Hello, world!') ``` ### Utiliser des Providers de modèles AI SDK Vous pouvez transmettre directement à CompositeVoice des modèles de transcription et de synthèse AI SDK : ```typescript import { CompositeVoice } from '@mastra/core/voice' import { openai } from '@ai-sdk/openai' import { elevenlabs } from '@ai-sdk/elevenlabs' // Use AI SDK models directly - they will be auto-wrapped const voice = new CompositeVoice({ input: openai.transcription('whisper-1'), // AI SDK transcription output: elevenlabs.speech('eleven_turbo_v2'), // AI SDK speech }) // Works the same way as with Mastra providers const text = await voice.listen(audioStream) const audio = await voice.speak('Hello from AI SDK!') ``` ### Combiner les Providers Vous pouvez combiner les Providers Mastra avec les modèles AI SDK : ```typescript import { CompositeVoice } from '@mastra/core/voice' import { PlayAIVoice } from '@mastra/voice-playai' import { groq } from '@ai-sdk/groq' const voice = new CompositeVoice({ input: groq.transcription('whisper-large-v3'), // AI SDK for STT output: new PlayAIVoice(), // Mastra for TTS }) ```