OpenAIは、多くのアシスタントが採用している「話してから聞く」という不格好な間(ま)を排除し、聞き取りと発話を同時に行う音声特化型チャットボットGPT-Liveを構築しました。このサービスは、断続的なやり取りではなく、人間同士の対話のように流れるような会話を目指しています。

なぜ従来のモデルは使いにくかったのか

一般的な音声アシスタントは、トランシーバーのように動作します。ユーザーが文章を終えると、デバイスが録音し、音声をクラウドに送信し、応答を待ち、それを再生するという仕組みです。この往復プロセスが顕著な遅延を生み、ユーザーは割り込みたい場合でも、一度話を止めて待たなければなりません。インスタントメッセージングに慣れ親しんだ世代にとって、この遅延は時代遅れに感じられます。

OpenAIは、**ターンレス(turn-less)**アーキテクチャでこれに応えました。GPT-Liveは1秒ごとに、聞き取りを続けるか、話し続けるか、あるいは一時停止するかを判断します。これにより、応答サイクルが完了するのを待たずに、アシスタントの回答の途中で遮ったり、続けて質問したりすることが可能になります。

全二重(full-duplex)スタックを分かりやすく解説

  1. オーディオループと推論パスの分離 – *ファストパス(fast path)*が継続的な音声交換を処理し、*スローパス(slow path)*がウェブ検索やツール呼び出しなどの重いタスクを実行します。スローパスが処理を行っている間もファストパスが会話を維持するため、恐れていた「考えている間の沈黙」という瞬間がなくなります。
  2. WARPプロトコル – 従来のウェブ接続では、音声が流れる前に何度もハンドシェイクを行う必要があり、多くの場合6回の往復が発生します。OpenAIのカスタムプロトコルは、これらのステップを1回の往復に集約し、セッションの開始をほぼ瞬時に感じさせます。
  3. レイテンシの安定性のためにPythonからGoへ移行 – チームは、迅速な開発に優れたPythonから、より予測可能な実行時間を提供するGoへとリアルタイムコンポーネントを移行しました。音声AIにおいては、平均速度よりも「最悪の場合の遅延」が重要です。一瞬の途切れが没入感を削いでしまうため、一貫したレイテンシが求められます。
  4. GPUを超えたスケーリング – 数億人のユーザーを抱える中で、ボトルネックはモデルの演算コアから周囲のインフラへと移りました。OpenAIは、GPUよりも先にCPUやネットワークリンクが飽和することを発見したため、スタックの他の部分に過負荷をかけずにGPUにデータを供給し続けられるよう、よりスマートなルーティングと接続管理を追加しました。

開発者にとっての意味

  • 音声処理とビジネスロジックの分離 – マイク入力とスピーカー出力を処理する、軽量で常時稼働のループを維持してください。データベースクエリや外部API呼び出しなど、待機可能なものはすべて別のスレッドやサービスにオフロードします。
  • レイテンシの安定性を優先する – 平均値だけでなく、最悪の遅延に焦点を当てて応答時間を測定してください。スケジューリングをより厳密に制御できる言語やランタイム(例:Go、Rust)は、追加のエンジニアリング工数をかける価値があります。
  • 接続オーバーヘッドの削減 – ハンドシェイクが増えるたびに、ミリ秒単位の遅延が積み重なります。認証、ストリームのネゴシエーション、コーデックの選択を単一のやり取りにまとめれば、ユーザーは違いを実感できるはずです。

トレードオフと未解決の課題

全二重設計は複雑さを増大させます。

今後の注目点