voice.send()
send() メソッドは、継続的に処理するため、Voice Provider に音声データをリアルタイムでストリーミングします。マイク入力を AI サービスに直接送信できるため、リアルタイムの音声間会話に不可欠です。
使用例使用例への直接リンク
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 を指定できます。
戻り値戻り値への直接リンク
Voice Provider が音声データを受け入れると解決する Promise<void> を返します。
注意事項注意事項への直接リンク
- このメソッドは、音声間通信をサポートするリアルタイム Voice Provider だけが実装します
- この機能をサポートしない Voice Provider で呼び出すと、警告を記録して直ちに解決します
send()を使用する前にconnect()を呼び出し、WebSocket 接続を確立する必要があります- 音声形式の要件は Voice Provider によって異なります
- 継続的な会話では、通常
send()でユーザー音声を送信してから、answer()で AI の応答を開始します - 通常、Provider は音声の処理中に文字起こしテキストを含む 'writing' イベントを送出します
- AI が応答すると、Provider は音声応答を含む 'speaking' イベントを送出します