Open4

OpenAI Realtime API の調査

ren8kren8k

先日の OpenAI DevDay で発表された Realtime API について,自分用に調査した内容です.Realtime API の概要やその他発表された機能の概要については,本リンク本記事で日本語でよくまとめられていました.

リアルタイムで低遅延な音声会話可能な API である Realtime API をリリース

  • Realtime API で利用可能な新しい対応モデルとして  gpt-4o-realtime-preview  が OpenAI [1] および Azure [2] で利用可能になりました.
    • 入出力には音声とテキストが対応.
    • Function Calling にも対応.
  • API Reference は [3] で公開されてますが,本日時点(2024/10/04)では JavaScript の実装しか公開されてないです.
  • Azure では,East US 2 (eastus2) および Sweden Central (swedencentral) のみで利用可能です.
  • 仕組みとしては,内部的に WebSocket 接続を行うことで,クライアントとサーバーとの双方向のリアルタイム通信を実現しています [4] .Realtime API はステートフルなので,セッションが確立している限り会話内容は保持されます [3].
    • OpenAI におけるエンドポイントは以下 [3].
    wss://api.openai.com/v1/realtime
    
    • Azure OpenAI におけるエンドポイントは以下(例)[4].
    wss://my-eastus2-openai-resource.openai.azure.com/openai/realtime?api-version=2024-10-01-preview&deployment=gpt-4o-realtime-preview
    
  • AOAIでのサンプルコードや AOAI Studio での利用手順は [4] [5]で公開されておりますが,ソリューションに組み込む場合,かなり複雑になりそうです.
    • サンプルコードでは,JavaScript による簡易アプリケーションと,Python による API 実行サンプルが含まれています.
    • Python のサンプルコードでは,予め準備した mp3 や wav などの音源データを入力とし,出力として音源データ(wav)とテキストデータ(発話内容)が保存されます.
    • 私の方でも動作検証しましたが,本 API のサービスへの組み込みは難易度が高い印象でした.特に,非同期処理の実装や WebSocket 接続による API の利用が難しいと感じました.(ここらへんは WebRTC などのノウハウが無いと厳しそうです.)
  • 本 API では,テキストトークンと音声トークンの両方を使用しており,価格は以下です.(音声が高いです)
    • テキスト入力:$5/100 万トークン,テキスト出力:$20/100 万トークン
    • 音声入力:$100/100 万トークン,音声出力:$200/100 万トークン

従来の Chat Completions API でも,音声の入出力が可能に(数週間以内に利用可能になる)

  • Chat Completions API で利用可能な新しい対応モデルとして  gpt-4o-audio-preview  が数週間以内にリリースされるらしいです [1].
  • gpt-4o-audio-preview  では,テキストまたは音声を入力し,テキスト または 音声(またはその両方)を出力できます.
  • 料金については Realtime API と同様のようです.

References

1. https://openai.com/index/introducing-the-realtime-api/
2. https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models#gpt-4o-audio
3. https://platform.openai.com/docs/guides/realtime/overview
4. https://github.com/Azure-Samples/aoai-realtime-audio-sdk
5. https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/audio-real-time