Voix OpenAI Realtime
La classe OpenAIRealtimeVoice fournit des fonctionnalités d'interaction vocale en temps réel au moyen de l'API OpenAI fondée sur WebSocket. Elle prend en charge les échanges vocaux en temps réel, la détection d'activité vocale et le streaming audio fondé sur des événements.
Exemple d'utilisationLien direct vers Exemple d'utilisation
import { OpenAIRealtimeVoice } from '@mastra/voice-openai-realtime'
import { playAudio, getMicrophoneStream } from '@mastra/node-audio'
// Initialize with default configuration using environment variables
const voice = new OpenAIRealtimeVoice()
// Or initialize with specific configuration
const voiceWithConfig = new OpenAIRealtimeVoice({
apiKey: 'your-openai-api-key',
model: 'gpt-5.1-realtime-preview-2024-12-17',
speaker: 'alloy', // Default voice
})
voiceWithConfig.updateSession({
turn_detection: {
type: 'server_vad',
threshold: 0.6,
silence_duration_ms: 1200,
},
})
// Establish connection
await voice.connect()
// Set up event listeners
voice.on('speaker', ({ audio }) => {
// Handle audio data (Int16Array) pcm format by default
playAudio(audio)
})
voice.on('writing', ({ text, role }) => {
// Handle transcribed text
console.log(`${role}: ${text}`)
})
// Convert text to speech
await voice.speak('Hello, how can I help you today?', {
speaker: 'echo', // Override default voice
})
// Process audio input
const microphoneStream = getMicrophoneStream()
await voice.send(microphoneStream)
// When done, disconnect
voice.connect()
ConfigurationLien direct vers Configuration
Options du constructeurLien direct vers Options du constructeur
model?:
apiKey?:
speaker?:
Configuration de la détection d'activité vocale (VAD)Lien direct vers Configuration de la détection d'activité vocale (VAD)
type?:
threshold?:
prefix_padding_ms?:
silence_duration_ms?:
MéthodesLien direct vers Méthodes
connect()Lien direct vers connect
Établit une connexion au service OpenAI Realtime. Cette méthode doit être appelée avant d'utiliser les fonctions speak, listen ou send.
returns:
speak()Lien direct vers speak
Émet un événement speaking au moyen du modèle vocal configuré. Accepte en entrée une chaîne ou un stream lisible.
input:
options?:
speaker?:
Renvoie : Promise<void>
listen()Lien direct vers listen
Traite une entrée audio pour la reconnaissance vocale. Accepte un stream lisible de données audio et émet un événement 'listening' contenant le texte transcrit.
audioData:
Renvoie : Promise<void>
send()Lien direct vers send
Diffuse les données audio en temps réel vers le service OpenAI pour des scénarios de streaming audio continu, tels que l'entrée d'un microphone en direct.
audioData:
Renvoie : Promise<void>
updateConfig()Lien direct vers updateconfig
Met à jour la configuration de session de l'instance Voice. Cette méthode permet de modifier les paramètres de voix, la détection des tours de parole et d'autres paramètres.
sessionConfig:
Renvoie : void
addTools()Lien direct vers addtools
Ajoute un ensemble de Tools à l'instance Voice. Les Tools permettent au modèle d'effectuer des actions supplémentaires pendant les conversations. Lorsque OpenAIRealtimeVoice est ajouté à un Agent, tous les Tools configurés pour cet Agent sont automatiquement accessibles à l'interface Voice.
tools?:
Renvoie : void
close()Lien direct vers close
Se déconnecte de la session OpenAI Realtime et libère les ressources. Cette méthode doit être appelée lorsque vous avez terminé d'utiliser l'instance Voice.
Renvoie : void
getSpeakers()Lien direct vers getspeakers
Renvoie la liste des voix disponibles.
Renvoie : Promise<Array<{ voiceId: string; [key: string]: any }>>
on()Lien direct vers on
Enregistre un écouteur d'événements Voice.
event:
callback:
Renvoie : void
off()Lien direct vers off
Supprime un écouteur d'événements précédemment enregistré.
event:
callback:
Renvoie : void
ÉvénementsLien direct vers Événements
La classe OpenAIRealtimeVoice émet les événements suivants :
speaking:
writing:
error:
Événements OpenAI RealtimeLien direct vers Événements OpenAI Realtime
Vous pouvez également écouter les événements utilitaires OpenAI Realtime en leur ajoutant le préfixe 'openAIRealtime:' :
openAIRealtime:conversation.created:
openAIRealtime:conversation.interrupted:
openAIRealtime:conversation.updated:
openAIRealtime:conversation.item.appended:
openAIRealtime:conversation.item.completed:
Voix disponiblesLien direct vers Voix disponibles
Les options de voix suivantes sont disponibles :
alloy: neutre et équilibréeash: claire et préciseballad: mélodieuse et doucecoral: chaleureuse et amicaleecho: résonnante et profondesage: calme et poséeshimmer: claire et énergiqueverse: polyvalente et expressive
RemarquesLien direct vers Remarques
- Les clés d'API peuvent être fournies au moyen des options du constructeur ou de la variable d'environnement
OPENAI_API_KEY - L'API OpenAI Realtime Voice utilise WebSockets pour la communication en temps réel
- La détection d'activité vocale (VAD) côté serveur offre une meilleure précision pour détecter la parole
- Toutes les données audio sont traitées au format Int16Array
- L'instance Voice doit être connectée avec
connect()avant d'utiliser les autres méthodes - Appelez toujours
close()lorsque vous avez terminé afin de libérer correctement les ressources - La gestion de la mémoire est assurée par l'API OpenAI Realtime