OpenAI Realtime Voice
OpenAIRealtimeVoice クラスは、OpenAI の WebSocket ベースの API を使用してリアルタイムの音声対話機能を提供します。リアルタイムの音声から音声への変換、音声活動検出、およびイベントベースのオーディオストリーミングをサポートしています。
使用例
import { OpenAIRealtimeVoice } from "@mastra/voice-openai-realtime";
import { playAudio, getMicrophoneStream } from "@mastra/node-audio";
// Initialize with default configuration using environment variables
const voice = new OpenAIRealtimeVoice();
// Or initialize with specific configuration
const voiceWithConfig = new OpenAIRealtimeVoice({
chatModel: {
apiKey: 'your-openai-api-key',
model: 'gpt-4o-mini-realtime-preview-2024-12-17',
options: {
sessionConfig: {
turn_detection: {
type: 'server_vad',
threshold: 0.6,
silence_duration_ms: 1200
}
}
}
},
speaker: 'alloy' // Default voice
});
// Establish connection
await voice.connect();
// Set up event listeners
voice.on('speaker', ({ audio }) => {
// Handle audio data (Int16Array) pcm format by default
playAudio(audio);
});
voice.on('writing', ({ text, role }) => {
// Handle transcribed text
console.log(`${role}: ${text}`);
});
// Convert text to speech
await voice.speak('Hello, how can I help you today?', {
speaker: 'echo' // Override default voice
});
// Process audio input
const microphoneStream = getMicrophoneStream();
await voice.send(microphoneStream);
// When done, disconnect
voice.connect();
設定
コンストラクタオプション
chatModel?:
speaker?:
chatModel
model?:
apiKey?:
tools?:
options?:
options
sessionConfig?:
url?:
dangerouslyAllowAPIKeyInBrowser?:
debug?:
音声活動検出 (VAD) 設定
type?:
threshold?:
prefix_padding_ms?:
silence_duration_ms?:
メソッド
connect()
OpenAIリアルタイムサービスへの接続を確立します。speak、listen、またはsend関数を使用する前に呼び出す必要があります。
returns:
speak()
設定された音声モデルを使用してスピーキングイベントを発生させます。入力として文字列またはリーダブルストリームのいずれかを受け入れることができます。
input:
options.speaker?:
戻り値: Promise<void>
listen()
音声認識のために音声入力を処理します。音声データのリーダブルストリームを受け取り、書き起こされたテキストと共に「listening」イベントを発生させます。
audioData:
戻り値: Promise<void>
send()
ライブマイク入力のような連続音声ストリーミングシナリオのために、リアルタイムでOpenAIサービスに音声データをストリームします。
audioData:
戻り値: Promise<void>
updateConfig()
音声インスタンスのセッション設定を更新します。これを使用して、音声設定、ターン検出、その他のパラメータを変更できます。
sessionConfig:
戻り値: void
addTools()
音声インスタンスに一連のツールを追加します。ツールは、会話中にモデルが追加のアクションを実行できるようにします。OpenAIRealtimeVoiceがエージェントに追加されると、そのエージェントに設定されたツールは自動的に音声インターフェースで利用可能になります。
tools?:
戻り値: void
close()
OpenAIリアルタイムセッションから切断し、リソースをクリーンアップします。音声インスタンスの使用が終了したら呼び出す必要があります。
戻り値: void
getSpeakers()
利用可能な音声スピーカーのリストを返します。
戻り値: Promise<Array<{ voiceId: string; [key: string]: any }>>
on()
音声イベントのためのイベントリスナーを登録します。
event:
callback:
戻り値: void
off()
以前に登録されたイベントリスナーを削除します。
event:
callback:
戻り値: void
イベント
OpenAIRealtimeVoice クラスは次のイベントを発行します:
speaking:
writing:
error:
OpenAI リアルタイムイベント
‘openAIRealtime:’ をプレフィックスとして付けることで、OpenAI リアルタイムユーティリティイベント をリッスンすることもできます:
openAIRealtime:conversation.created:
openAIRealtime:conversation.interrupted:
openAIRealtime:conversation.updated:
openAIRealtime:conversation.item.appended:
openAIRealtime:conversation.item.completed:
利用可能な声
以下の声のオプションが利用可能です:
alloy
: 中立的でバランスの取れたash
: 明瞭で正確なballad
: メロディックで滑らかなcoral
: 暖かく親しみやすいecho
: 共鳴し深みのあるsage
: 落ち着いて思慮深いshimmer
: 明るくエネルギッシュなverse
: 多才で表現力豊かな