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 constructeurLien direct vers Paramètres du constructeur
config:
config.input?:
config.output?:
config.realtime?:
MéthodesLien direct vers Méthodes
speak()Lien direct vers speak
Convertit du texte en parole à l’aide du Provider de synthèse configuré.
input:
options?:
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()Lien direct vers listen
Convertit la parole en texte à l’aide du Provider de transcription configuré.
audioStream:
options?:
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()Lien direct vers getspeakers
Renvoie une liste des voix disponibles auprès du Provider de synthèse, dans laquelle chaque élément contient :
voiceId:
key?:
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’utilisationLien direct vers Exemples d’utilisation
Utiliser des Providers vocaux MastraLien direct vers Utiliser des Providers vocaux Mastra
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 SDKLien direct vers Utiliser des Providers de modèles AI SDK
Vous pouvez transmettre directement à CompositeVoice des modèles de transcription et de synthèse AI SDK :
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 ProvidersLien direct vers Combiner les Providers
Vous pouvez combiner les Providers Mastra avec les modèles AI SDK :
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
})