voice.send()
La méthode send() diffuse des données audio en temps réel vers les fournisseurs Voice afin qu’ils les traitent en continu. Elle est indispensable aux conversations vocales en temps réel, car elle permet d’envoyer directement l’entrée du microphone au service d’IA.
Exemple d’utilisationLien direct vers Exemple d’utilisation
import { OpenAIRealtimeVoice } from '@mastra/voice-openai-realtime'
import Speaker from '@mastra/node-speaker'
import { getMicrophoneStream } from '@mastra/node-audio'
const speaker = new Speaker({
sampleRate: 24100, // Audio sample rate in Hz - standard for high-quality audio on MacBook Pro
channels: 1, // Mono audio output (as opposed to stereo which would be 2)
bitDepth: 16, // Bit depth for audio quality - CD quality standard (16-bit resolution)
})
// Initialize a real-time voice provider
const voice = new OpenAIRealtimeVoice({
realtimeConfig: {
model: 'gpt-5.1-realtime',
apiKey: process.env.OPENAI_API_KEY,
},
})
// Connect to the real-time service
await voice.connect()
// Set up event listeners for responses
voice.on('writing', ({ text, role }) => {
console.log(`${role}: ${text}`)
})
voice.on('speaker', stream => {
stream.pipe(speaker)
})
// Get microphone stream (implementation depends on your environment)
const microphoneStream = getMicrophoneStream()
// Send audio data to the voice provider
await voice.send(microphoneStream)
// You can also send audio data as Int16Array
const audioBuffer = getAudioBuffer() // Assume this returns Int16Array
await voice.send(audioBuffer)
ParamètresLien direct vers Paramètres
audioData:
NodeJS.ReadableStream | Int16Array
Données audio à envoyer au fournisseur Voice. Il peut s’agir d’un flux lisible, tel qu’un flux de microphone, ou d’un Int16Array d’échantillons audio.
Valeur renvoyéeLien direct vers Valeur renvoyée
Renvoie une Promise<void> qui est résolue lorsque les données audio ont été acceptées par le fournisseur Voice.
RemarquesLien direct vers Remarques
- Cette méthode est uniquement implémentée par les fournisseurs Voice en temps réel qui prennent en charge les conversations vocales bidirectionnelles.
- Si elle est appelée sur un fournisseur Voice qui ne prend pas en charge cette fonctionnalité, elle consigne un avertissement et est résolue immédiatement.
- Vous devez appeler
connect()avant d’utilisersend()afin d’établir la connexion WebSocket. - Les exigences relatives au format audio dépendent du fournisseur Voice utilisé.
- Pour une conversation continue, vous appelez généralement
send()afin de transmettre l’audio de l’utilisateur, puisanswer()pour déclencher la réponse de l’IA. - Le fournisseur émet généralement des événements 'writing' contenant le texte transcrit pendant le traitement de l’audio.
- Lorsque l’IA répond, le fournisseur émet des événements 'speaking' contenant la réponse audio.