> Discover all available pages from the documentation index: https://mastra.zisheng.pro/llms.txt # voice.send() `send()` 方法将音频数据实时流式传输到 Voice Provider,以便持续处理。此方法是实时语音对语音会话的关键,可让你将麦克风输入直接发送到 AI 服务。 ## 使用示例 ```typescript 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) ``` ## 参数 **audioData** (`NodeJS.ReadableStream | Int16Array`): 要发送给 Voice Provider 的音频数据。可以是可读流(如麦克风流),也可以是音频样本的 Int16Array。 ## 返回值 返回 `Promise`,当 Voice Provider 接受音频数据时解析完成。 ## 注意事项 - 只有支持语音对语音功能的实时 Voice Provider 才实现了此方法 - 如果在不支持此功能的 Voice Provider 上调用此方法,它会记录警告并立即解析完成 - 必须先调用 `connect()` 建立 WebSocket 连接,再使用 `send()` - 音频格式要求取决于具体的 Voice Provider - 对于持续对话,通常先调用 `send()` 传输用户音频,再调用 `answer()` 触发 AI 响应 - Provider 通常会在处理音频时发出包含转录文本的 'writing' 事件 - AI 响应时,Provider 会发出包含音频响应的 'speaking' 事件