Inworld
L'implémentation vocale Inworld dans Mastra fournit des fonctionnalités de synthèse vocale (TTS) en streaming et de transcription vocale (STT) par lots à l'aide de l'API Inworld AI. Elle prend en charge plusieurs modèles TTS et STT, des encodages audio configurables et le streaming audio progressif.
Pour les échanges vocaux bidirectionnels simultanés en temps réel, le même package exporte InworldRealtimeVoice.
Exemple d'utilisationLien direct vers Exemple d'utilisation
import { InworldVoice } from '@mastra/voice-inworld'
// Initialize with default configuration (uses INWORLD_API_KEY environment variable)
const voice = new InworldVoice()
// Initialize with custom configuration
const voice = new InworldVoice({
speechModel: {
name: 'inworld-tts-2',
apiKey: 'your-api-key',
},
listeningModel: {
name: 'groq/whisper-large-v3',
apiKey: 'your-api-key',
},
speaker: 'Dennis',
})
// Text-to-Speech (streaming)
const audioStream = await voice.speak('Hello, world!')
// Speech-to-Text
const transcript = await voice.listen(audioStream)
Paramètres du constructeurLien direct vers Paramètres du constructeur
speechModel?:
name?:
apiKey?:
listeningModel?:
name?:
apiKey?:
speaker?:
audioEncoding?:
sampleRateHertz?:
language?:
MéthodesLien direct vers Méthodes
speak(input, options?)Lien direct vers speakinput-options
Convertit du texte en parole à l'aide du point de terminaison TTS en streaming d'Inworld. Renvoie un stream lisible qui émet progressivement les segments audio à mesure de leur arrivée.
const audioStream = await voice.speak('Hello, world!', {
speaker: 'Olivia',
audioEncoding: 'WAV',
sampleRateHertz: 24000,
speakingRate: 1.2,
temperature: 0.8,
})
input:
options?:
speaker?:
audioEncoding?:
sampleRateHertz?:
speakingRate?:
temperature?:
inworld-tts-1.5-* ; ignoré par inworld-tts-2.deliveryMode?:
inworld-tts-2.language?:
Renvoie : Promise<NodeJS.ReadableStream>
listen(input, options?)Lien direct vers listeninput-options
Convertit la parole en texte à l'aide du point de terminaison STT par lots d'Inworld.
const transcript = await voice.listen(audioStream, {
audioEncoding: 'MP3',
sampleRateHertz: 44100,
language: 'ja-JP',
})
input:
options?:
audioEncoding?:
sampleRateHertz?:
language?:
numberOfChannels?:
Renvoie : Promise<string>
getSpeakers()Lien direct vers getspeakers
Renvoie la liste des voix disponibles dans l'API Inworld.
const speakers = await voice.getSpeakers()
// [{ voiceId: 'Dennis', name: 'Dennis', language: 'en', description: '...', tags: ['friendly'], source: 'SYSTEM' }, ...]
Renvoie : Promise<Array<{ voiceId: string; name: string; language: string; description: string; tags: string[]; source: string }>>
RemarquesLien direct vers Remarques
- Le point de terminaison TTS utilise le streaming NDJSON progressif ; la lecture audio peut donc commencer avant la réception de la réponse complète.
- Une clé API peut être fournie dans la configuration
speechModeloulisteningModel, ou avec la variable d'environnementINWORLD_API_KEY. Les clés TTS et STT sont résolues indépendamment : transmettre des valeursspeechModel.apiKeyetlisteningModel.apiKeydistinctes permet à chaque service d'utiliser ses propres identifiants. Si une seule clé est fournie, elle est réutilisée pour les deux services comme valeur de repli avant la variable d'environnement. inworld-tts-2est le modèle phare par défaut. UtilisezdeliveryMode(STABLE|BALANCED|CREATIVE) pour orienter le style d'élocution de ce modèle. L'optiontemperatureest ignorée surinworld-tts-2.- Le modèle
inworld-tts-1.5-minioffre une latence plus faible au prix d'une qualité vocale inférieure à celle deinworld-tts-1.5-max.