Aller au contenu principal

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'utilisation
Lien 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 constructeur
Lien direct vers Paramètres du constructeur

speechModel?:

InworldVoiceConfig
= { name: 'inworld-tts-2' }
Configuration de la fonctionnalité de synthèse vocale.
InworldVoiceConfig

name?:

'inworld-tts-2' | 'inworld-tts-1.5-max' | 'inworld-tts-1.5-mini'
Modèle TTS Inworld à utiliser.

apiKey?:

string
Clé API Inworld. Utilise par défaut la variable d’environnement INWORLD_API_KEY.

listeningModel?:

InworldListeningConfig
= { name: 'groq/whisper-large-v3' }
Configuration de la fonctionnalité de transcription vocale.
InworldListeningConfig

name?:

'groq/whisper-large-v3'
Modèle STT Inworld à utiliser.

apiKey?:

string
Clé API Inworld. Utilise par défaut la variable d’environnement INWORLD_API_KEY.

speaker?:

string
= 'Dennis'
ID de voix par défaut à utiliser pour la synthèse vocale.

audioEncoding?:

'LINEAR16' | 'MP3' | 'OGG_OPUS' | 'ALAW' | 'MULAW' | 'FLAC' | 'PCM' | 'WAV'
= 'MP3'
Encodage audio par défaut de la sortie TTS.

sampleRateHertz?:

number
= 48000
Fréquence d’échantillonnage par défaut de la sortie TTS.

language?:

string
= 'en-US'
Code de langue BCP-47 par défaut pour la STT.

Méthodes
Lien 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:

string | NodeJS.ReadableStream
Texte à convertir en parole. Si un stream est fourni, il sera d'abord converti en texte.

options?:

InworldSpeakOptions
Options supplémentaires de synthèse vocale.
InworldSpeakOptions

speaker?:

string
Remplace le locuteur par défaut pour cette requête.

audioEncoding?:

AudioEncoding
Remplace l’encodage audio par défaut.

sampleRateHertz?:

number
Remplace la fréquence d’échantillonnage par défaut.

speakingRate?:

number
Règle la vitesse de parole.

temperature?:

number
Contrôle la variabilité de la voix. Pris en compte par les modèles inworld-tts-1.5-* ; ignoré par inworld-tts-2.

deliveryMode?:

'STABLE' | 'BALANCED' | 'CREATIVE'
Contrôle d’orientation du style d’élocution. Pris en compte uniquement par inworld-tts-2.

language?:

string
Code de langue BCP-47 de cette requête. Détecté automatiquement s’il est omis.

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:

NodeJS.ReadableStream
Stream audio à transcrire.

options?:

InworldListenOptions
Options supplémentaires de transcription.
InworldListenOptions

audioEncoding?:

'LINEAR16' | 'MP3' | 'OGG_OPUS' | 'FLAC' | 'AUTO_DETECT'
Encodage audio du stream d’entrée.

sampleRateHertz?:

number
Fréquence d’échantillonnage de l’audio d’entrée.

language?:

string
Code de langue BCP-47 de la transcription.

numberOfChannels?:

number
Nombre de canaux audio dans l’entrée.

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 }>>

Remarques
Lien 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 speechModel ou listeningModel, ou avec la variable d'environnement INWORLD_API_KEY. Les clés TTS et STT sont résolues indépendamment : transmettre des valeurs speechModel.apiKey et listeningModel.apiKey distinctes 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-2 est le modèle phare par défaut. Utilisez deliveryMode (STABLE | BALANCED | CREATIVE) pour orienter le style d'élocution de ce modèle. L'option temperature est ignorée sur inworld-tts-2.
  • Le modèle inworld-tts-1.5-mini offre une latence plus faible au prix d'une qualité vocale inférieure à celle de inworld-tts-1.5-max.