Aller au contenu principal

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’utilisation
Lien 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ètres
Lien 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ée
Lien 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.

Remarques
Lien 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’utiliser send() 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, puis answer() 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.