Bỏ qua tới nội dung
Quay lại danh sách bài viết
ai14分

OpenAI Realtime API: Xây dựng ứng dụng AI giọng nói thời gian thực

OpenAI Realtime API: Building Real-Time Voice AI

金 東勲Infrastructure Engineer
2026-03-1114分
OpenAIRealtime APIWebSocketVoice AIFunction Calling

Bài viết này được đăng bằng tiếng Nhật. Tóm tắt tiếng Việt ở dưới:

OpenAI Realtime API: Xây dựng ứng dụng AI giọng nói thời gian thựcHướng dẫn thiết kế và triển khai ứng dụng AI giọng nói với OpenAI Realtime API: quản lý kết nối WebSocket, triển khai VAD, tích hợp Function Calling, tối ưu latency và phân tích chi phí thực tế.

音声AIの転換点

従来の音声AIアーキテクチャは「音声認識(STT)→ LLM処理 → 音声合成(TTS)」の3段パイプラインだった。各段階で200-500msのレイテンシが加算され、エンドツーエンドで1.5-3秒の応答遅延が発生する。人間の自然な会話ではターン間のポーズが約200msであることを考えると、この遅延はユーザー体験を著しく損なう。

OpenAI Realtime APIはこのパイプラインを統合し、音声入力から音声出力までをシングルモデルで処理する。実測レイテンシはfirst byteまで300-500ms、体感的にはほぼリアルタイムの会話が成立する。

WebSocket接続の設計

Realtime APIはWebSocketベースの永続接続を使用する。HTTPのリクエスト/レスポンスモデルとは根本的に異なるため、アプリケーションアーキテクチャを再考する必要がある。

接続の確立はwss://api.openai.com/v1/realtimeに対してWebSocketハンドシェイクを行い、Authorization headerにAPIキーを含める。接続後、session.createイベントでセッションを初期化し、モデル(gpt-4o-realtime-preview)、音声設定(voice: "alloy"等)、ターン検出の設定を指定する。

KGAの実装では、接続管理にリコネクションロジックを必ず組み込んでいる。WebSocket接続は15分のアイドルタイムアウトがあり、ネットワーク品質によってはより短い間隔で切断される。exponential backoffで自動再接続し、セッション状態を復元する処理が必須だ。

音声モードの実装

Realtime APIの音声入出力はPCM16フォーマット(24kHz、モノラル)で処理される。ブラウザからはWebAudio APIのAudioWorkletでマイク入力をキャプチャし、Base64エンコードしてinput_audio_buffer.appendイベントで送信する。

サーバーからの音声応答はresponse.audio.deltaイベントで断片的に届く。これをAudioWorkletのリングバッファに蓄積し、再生する。重要なのはバッファサイズの調整で、小さすぎると音切れ、大きすぎるとレイテンシ増加のトレードオフがある。KGAの検証では100msバッファが最適バランスだった。

ターン検出(Voice Activity Detection: VAD)はserver_vadモードを推奨する。サーバー側でユーザーの発話終了を検出し、自動的に応答生成を開始する。silence_duration_msパラメータで発話終了の判定しきい値を調整でき、KGAでは500msに設定している。短すぎるとユーザーの思考中の間を発話終了と誤判定する。

Function Callingの統合

Realtime APIの最も強力な機能は、音声対話中にFunction Callingを実行できる点だ。ユーザーが「今日の東京の天気を教えて」と音声で質問すると、モデルがget_weather関数を呼び出し、結果を音声で返す。このフローがシームレスに200ms以内で処理される。

sessionの初期化時にtoolsパラメータで関数定義を渡す。関数が呼び出されるとresponse.function_call_arguments.doneイベントが発火し、アプリケーション側で関数を実行してconversation.item.createで結果を返す。

KGAがクライアント向けに開発したコールセンターAIでは、12個の関数(顧客情報検索、注文状況確認、返品処理、FAQ検索等)を登録している。音声対話中にユーザーの意図を判定し、適切な関数を呼び出してバックエンドシステムと連携する。平均処理時間は関数呼び出し含めて1.2秒で、従来のIVRシステムの平均通話時間を65%短縮した。

レイテンシ最適化

Realtime APIのレイテンシを最小化するためのテクニックを共有する。

Edge Location活用: Cloudflare Workersを中間プロキシとして配置し、ユーザーに最も近いエッジからOpenAI APIに接続する。日本のユーザーの場合、東京リージョンのWorkerからOpenAIの東海岸サーバーへの接続で、直接接続と比較してTLSハンドシェイクを含めた初回レイテンシを40%削減できた。

Audio Chunking最適化: マイク入力を20msチャンクで送信する設定が最もレイテンシとネットワーク効率のバランスが良い。10msでは帯域消費が過大、50msでは体感遅延が増加する。

Pre-warming: セッション確立後、空の音声バッファを送信してモデルをウォームアップする。最初のユーザー発話に対する応答レイテンシを200ms短縮できる。

コスト構造と注意点

Realtime APIのコストは、音声入力$0.06/分、音声出力$0.24/分(2025年6月時点)。テキストベースのAPIと比較して3-5倍のコストとなる。10分間の音声対話セッションで約$3.00。コールセンター用途では1通話あたりのコストとして許容範囲だが、大量のカジュアル対話には高コストだ。

コスト削減策として、KGAではturn_detectionのthresholdを調整し、無音区間の課金を最小化している。また、単純なFAQ応答はテキストベースAPIで処理し、複雑な対話のみRealtime APIにルーティングするハイブリッド構成を採用している。これにより全体コストを55%削減した。

Cùng giải quyết các thách thức kỹ thuật của bạn.

KGA IT Solutions có đội ngũ chuyên gia AI, cloud và DevOps mang lại giải pháp tối ưu cho thách thức của bạn.

Liên hệ