🎤

ついに正式版が出たOpenAIの音声AI『Realtime API』の概要とベータ版との比較

8/29にOpenAIから待望のRealtime API 正式版が発表されました。Realtime APIはAIとリアルタイムの対話を実現するAPIです。
昨年の12月17日にベータ版が発表され、今年の6月3日にもベータ版が更新されていましたが、今回ついにベータが外れて正式版となりました。これで自社プロダクトにも組み込みやすくなりますね。
また、強化されたリアルタイム音声モデルの『gpt-realtime』も併せて発表されています。

私も12月からベータ版を触っていましたが、当時と比べて大きな改善を感じています。
早速触ってみたので、その概要と今までとの違いをまとめてみます。

Realtime APIとは?

OpenAI Realtime APIは、低遅延でAIと音声対話ができるAPIです。従来の音声アシスタントとの最大の違いは、音声を一度もテキストに変換せずに、音声のまま処理・生成できる点にあります。

これにより下記のような動作を実現できます:

  • 超低遅延の音声対話:テキスト変換するタイムラグがない
  • マルチモーダル入力:音声、画像、テキストを組み合わせて処理
  • リアルタイム文字起こし:音声の同時テキスト化
  • Function calling:音声対話中に関数を実行

また、AIが音声を直接理解することでモデル自体が音声のトーンや抑揚といった音響的特徴を直接理解・生成できることも特徴です。
これまでのTTSでは失われがちだった感情的なニュアンスも理解・再現できるようになっています。

Realtime APIができること

音声による会話

核となる機能は、音声による会話です。
8つの異なる音声(alloy, ash, ballad, coral, echo, sage, shimmer, verse)から選択でき、会話の速度も調整可能です。

Voice Activity Detection (VAD) 機能:
ユーザーの発話開始・終了を自動検知して、自然な話者の切り替えを実現します。「えーっと」といった間や、考え込んでいる沈黙も適切に処理してくれます。
ベータ版の時から同様の機能はありましたが、正式版になってかなり安定感が増したように感じます。

画像認識

音声対話中に画像を送信して、その内容について音声で質問できます。たとえば、料理の写真を送信して、「この写真に写ってる料理は何?」といった自然な会話ができます。

リアルタイム文字起こし

音声をリアルタイムでテキスト化する専用モードも提供されています。一般的な文字起こしサービスとの違いは、ストリーミング処理による超低遅延と、会話の文脈を理解した高精度な変換です。
モデルはwhisper-1と、gpt-4o系を選べました。
(whisper-1は名称が変わっていないものの、精度が上がっているような感覚がありました。気のせいかもしれません)

接続方式の使い分け

3つの接続方式が用意されており、用途に応じて最適なものを選べます:

WebRTC

  • ブラウザやモバイルアプリ向けにOpenAIが推奨するモデル
  • メディアストリーミングが自動的に最適化される
  • ネットワーク速度の変化に強い

WebSocket

  • サーバーサイドアプリケーション向け
  • 安定した低遅延ネットワーク環境に適している
  • 音声データを手動で制御したい場合にもGood

SIP

  • VoIP電話システムとの連携用
  • 既存のテレフォニーインフラと簡単に統合できる

個人的には、ブラウザアプリならWebRTCで実装するのが最適かと思います。
サーバーサイドでの細かい制御が必要ならWebSocketを選ぶのもよさそうです。

ベータ版との違い

1. MCP(Model Context Protocol)サーバー対応

これが最も重要な新機能です。リモートのMCPサーバーを直接指定するだけで、そのサーバーが提供するツールを音声AIから呼び出せます。

従来は個別にFunction callingを実装する必要がありましたが、MCPサーバーを使うことで既存のツールエコシステムを簡単に活用できるようになりました。

2. 画像入力対応

音声対話中に画像を送信して、その内容について音声で質問できます。
たとえば、「この写真に写っているものは何?」といった質問を音声でできるようになりました。

3. SIP電話対応

Session Initiation Protocol(SIP)を使って、既存の電話システムと直接連携可能になりました。
これにより以下のようなユースケースに対応できるようになります。

  • 従来の電話回線からAIと対話
  • PBXシステムとの統合
  • 企業の既存テレフォニーインフラとの連携

このあたりはコールセンターやコールドコール(電話営業)での利用を想定して作っているのかもしれません。

4. 非同期の関数呼び出し(Function calling)

従来は関数実行中に会話が止まっていましたが、正式版で関数実行を待っている間も自然な会話を継続できるようになりました。これは開発者側の実装変更は不要で、モデル側で自動的に処理されます。

5. 新しい音声の追加と、品質改善

Cedar と Marin という2つの新しい音声が追加されました。既存の8つの音声も品質改善されています。

各種ベンチマークの変化

モデルがgpt-4o-realtimeからgpt-realtimeに変化したことによって、全体的な性能が向上しています。
OpenAIが公式発表しているベンチマークを引用すると、以下のとおりです。

  • 推論能力: 65.6% → 82.8%(Big Bench Audio)
  • 指示遵守: 20.6% → 30.5%(MultiChallenge Audio)
  • Function calling: 49.7% → 66.5%(ComplexFuncBench Audio)

正式版を使ってみた所感

私は去年の12月にがっつり触って以来なので、そちらとの比較になるのですが、特に感動したのは会話の理解力と、会話の切り替えのスムーズさです。

以前のRealtime APIだとAIが話している最中に割り込むことができず、延々と話し続けられて自然な会話とはなりにくかったです。新しいRealtime APIでは、AIが話している途中で私が割り込んでも、しっかり会話を止めて話を聞いてくれます。これで討論番組や国会にも出られそうですね。

また、以前のモデルだと勝手にスペイン語や韓国語で話し始めることがあった(私の滑舌が悪いせいかもしれない)のですが、新しいRealtime APIだと必ず日本語で話してくれています。

気になった点・欠点

会話の自然さにはもう少し改善が必要な気がします。
個人的に特に気になるのは、ディズニー声優のような激しい抑揚がついた喋り方をすることです。「抑揚を抑えて話して」と指示すると、やや自然になりました。

また、イヤホンをつけずにスピーカーで会話すると、AIがAIの音声を自分に対する発言だと勘違いして、自分同士で会話を始めます
このあたりの実装をするにあたっては、ユーザーにイヤホンの利用をうながすか、スピーカーの音声を受け取らない制御をする必要がありそうです。
(ちなみに私の手元だとAI同士はなぜかスペイン語で話します。)

簡単に試してみる方法

実際に触ってみるなら、まずはOpenAIのダッシュボードのPlaygroundを使うのが簡単です。ここでリアルタイムの音声対話を体験できます。

また、WebRTCを使ったサンプルアプリも公開されています:

このサンプルを動かせば、ブラウザ上で直接音声対話を試せます。

プロンプト設計について

OpenAIは音声AIに向けた効果的なプロンプト設計についてのドキュメントも発表しています。
Using realtime models

特に注目したいのは:

細かい表現による大きな変化
「inaudible」を「unintelligible」に変えただけで、ノイズ処理が大幅に改善したという事例も記載されています。小さな表現の違いが大きな影響を与えます。

段落よりも箇条書き
長い段落よりも、短い箇条書きの方がモデルが従いやすいとのことです。

聞き取れなかった場合の対応を明確にする

  • 音声が不明瞭な場合は聞き返す
  • 具体的な聞き返しフレーズを例示

数値は数式より文字で書いた方が精度が上がりやすい

  • たとえば、x * 3と書くよりx times threeと書いた方が伝わる。

音声AIならではのプロンプトテクニックも奥が深いですね。
公式ドキュメントには他にも様々なテクニックが記載されているので、確認してみてください。

さいごに

Realtime APIの正式化によって、開発中のサービスに音声AIを組み込むことが非常に簡単になりました。ゲーム、カスタマーサポート、営業など、様々な領域でユーザー体験を向上させるためのアイデアが出てくることでしょう。

また、記事中にはやや使いにくかった点なども書きましたが、プロンプトエンジニアリングや実装の工夫で改善できそうな部分でもあるので、そういったノウハウも溜まってくることでより使いやすくなると思います。

下記に公式ドキュメントを貼っておくので、ぜひみなさんのアイデアを実現してみてください!


参考リンク

フォワード  Tech Blog

Discussion