OpenAIが大規模に低遅延の音声AIを提供する方法
6時間前原文(openai.com)
概要
- OpenAIはリアルタイムAI対話のためにWebRTCスタックを再設計
- 低遅延・安定性・グローバル対応を重視したアーキテクチャ
- 分割リレー+トランシーバ方式でパケットルーティングを最適化
- WebRTC標準の利点を活かしつつ、クラウド環境に最適化
- セッション管理・メディア転送の効率化による自然な音声体験の実現
OpenAIのリアルタイム音声AI体験を支えるWebRTC再設計
- Voice AIの自然さは会話のスピード維持が鍵
- ネットワーク遅延が発生すると、即座に「不自然な間」や「途切れ」が発生
- ChatGPT voiceやRealtime API利用開発者、インタラクティブなワークフローのエージェントにも影響
- OpenAI規模(週9億アクティブユーザー)での具体要件
- グローバル対応
- セッション開始時の高速接続
- 低遅延・安定したメディア往復時間(低ジッター・低パケットロス)
スケーラビリティとWebRTCの課題
- 従来のWebRTC(セッションごとに1ポート)はOpenAIのインフラに適合しにくい
- ICE/DTLSの状態管理と安定したセッションオーナーシップが必要
- グローバルルーティングでファーストホップ遅延を最小化
- WebRTCは低遅延音声・映像・データ伝送のオープン標準
- ICE:接続確立・NAT越え
- DTLS/SRTP:暗号化
- コーデックネゴシエーション:圧縮・復号
- RTCP:品質制御
- エコーキャンセルやジッターバッファなどのクライアント機能
AIプロダクトにWebRTCが重要な理由
- NAT越え・暗号化・コーデック管理をクライアントごとに実装不要
- WebRTCエコシステム(オープンソース実装・標準化)の恩恵
- Justin Uberti(WebRTC設計者), Sean DuBois(Pion開発者)もOpenAIに参加
- AI体験では音声が連続ストリームで届くことが最重要
- ユーザー発話中に逐次認識・推論・音声生成が可能
- 「会話的」体験と「プッシュ・トゥ・トーク型」の違い
メディア終端方式の選択
- SFU(Selective Forwarding Unit):多者通話・グループ向けに最適
- 各参加者のWebRTC接続をSFUが終端し、音声ストリームを選択的に転送
- シグナリング・録音・ポリシー管理が一元化
- OpenAIの用途は1:1が大半(ユーザー1人⇔モデル1つ)
- トランシーバモデルを採用
- エッジサービスがWebRTC接続を終端
- メディア・イベントを内部プロトコルに変換し、モデル推論・音声生成・オーケストレーションへ
- トランシーバモデルを採用
トランシーバサービスの役割と課題
- シグナリング:SDP交渉・コーデック選択・ICE認証情報・セッション設定
- メディア:WebRTC接続終端・バックエンドとの接続維持
- Kubernetes上での運用を想定
- 従来の「セッションごとに1ポート」モデルは大規模UDPポート管理が困難
- クラウドLBやKubernetesサービスは数万ポート単位の管理に非対応
- セキュリティ・監査・オートスケールにも不向き
シングルポート設計とセッションオーナーシップ
- 1サーバあたり1UDPポート+アプリ層でのデマルチプレクス
- ポート数問題は解決
- ただし、セッションの所有権維持が新たな課題
- ICE/DTLSは状態フルなため、同一プロセスでパケット受信が必須
- パケットが別プロセスに届くと接続失敗やメディア破損リスク
各方式の評価とOpenAIの選択
- ユニークIP:port/セッション:直結だが大規模運用に不向き
- ユニークIP:port/サーバ:ポート数減だが負荷分散環境では不十分
- TURNリレー:一元管理可能だがセットアップ遅延や移動時の困難
- OpenAIのリレー+トランシーバ方式:UDP公開範囲最小・セッション所有維持・カスタム連携が必要
分割リレー+トランシーバアーキテクチャの詳細
- シグナリングはトランシーバが担当、メディアはまずリレーを経由
- リレーはUDPパケットの軽量転送レイヤー
- メディア復号・ICE管理・コーデック交渉は行わず、最小限のメタデータで宛先決定
- トランシーバはWebRTCセッション状態を全て保持
- クライアントから見れば標準的なWebRTCセッションと同等
- ファーストパケットルーティングが肝
- **ICE username fragment(ufrag)**にルーティング情報を埋め込み
- シグナリング中にトランシーバがufrag生成、リレーVIPとUDPポートをSDPで返却
- クライアントはVIP:port(例:203.0.113.10:3478)へ送信
- リレーは最初のSTUNパケットからufragを抽出し、トランシーバへ転送
- トランシーバは共有UDPソケットで受信、以降はセッション情報でルーティング
- リレーのセッション情報はメモリ上の最小構成
- カウンタ・タイマーのみ保持し、再起動時もufragから再構築可能
まとめ
- OpenAIはWebRTCの標準挙動を維持しつつ、大規模・低遅延・高信頼性を実現
- 分割リレー+トランシーバ方式でクラウド・Kubernetes環境に最適化
- 音声AI体験の自然さと拡張性を両立