メインコンテンツへ移動

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' イベントを送出します