UStackUStack
OpenAI Realtime API icon

OpenAI Realtime API

OpenAI Realtime APIで低遅延なマルチモーダル音声・リアルタイム体験を構築。ブラウザ音声エージェントやリアルタイム文字起こしにも対応。

OpenAI Realtime API

OpenAI Realtime APIとは?

OpenAI Realtime APIは、アプリケーションと音声対音声をネイティブにサポートするモデル間の低遅延通信を提供します。また、マルチモーダル入力(音声、画像、テキスト)とマルチモーダル出力(音声、テキスト)をサポートし、インタラクティブな音声体験に適しています。

音声エージェント以外にも、WebSocket接続で音声をストリーミングすることでリアルタイム音声文字起こしに使用可能です。ドキュメントでは、ブラウザベースの音声エージェントワークフロー向けの推奨開始点(例: TypeScript用Agents SDK)を紹介しています。

主な機能

  • 低遅延音声対音声インタラクション: リクエスト/レスポンスのみではなく、リアルタイム会話オーディオ体験向けに設計。
  • マルチモーダル入力(音声、画像、テキスト): アプリケーションの流れに応じて、1つのセッションで異なる入力タイプを受け入れ可能。
  • マルチモーダル出力(音声、テキスト): インタラクションの一部として音声、テキスト、または両方を返却可能。
  • 複数の接続方法: WebRTC(ブラウザ/クライアントサイド)、WebSocket(ミドルティアサーバーサイドで一貫した低遅延)、SIP(VoIPテレフォニー)から選択。
  • セッション・会話ツールガイド: プロンプト、会話ライフサイクルイベント、サーバー上でのセッション挙動管理のガイダンスを含む。
  • WebSocket経由のリアルタイム文字起こし: 音声ストリームをリアルタイムで文字起こしするパスを提供。

OpenAI Realtime APIの使い方

  1. アプリの実行環境に応じて接続方法を選択: ブラウザ/クライアント用はWebRTC、サーバー/ミドルティア用はWebSocket、VoIPテレフォニー用はSIP。
  2. セッションを開始。ブラウザ音声エージェントの場合、ドキュメントはTypeScript用Agents SDK(ブラウザでWebRTC、サーバーでWebSocketを使用)を推奨。
  3. コードでセッションを作成・初期化し、クライアントAPIキーを使って接続(例: RealtimeAgentRealtimeSessionsession.connectを使用)。
  4. イベントでモデルとインタラクト。接続後、プロンプト/ステアリング、会話ライフサイクル管理、必要に応じたWebhook経由のサーバー制御のガイドを使用。

ドキュメントでは、Realtimeリクエストの認証に影響するGA移行詳細(FAQ参照)を記載しています。

ユースケース

  • 音声対音声のブラウザベース音声エージェント: WebRTC(主にTypeScript用Agents SDK経由)でマイクと音声出力を接続し、インタラクティブな会話を実現。
  • サーバーバックエンドのリアルタイムアシスタント: 一貫した低遅延ネットワークと集中セッション管理が必要な場合、ミドルティアからWebSocket接続を使用。
  • VoIP/テレフォニー統合: ウェブブラウザではなくテレフォニー環境向けにSIP経由で接続。
  • リアルタイム音声文字起こし: WebSocket経由で音声をRealtime文字起こしフローにストリーミングし、送信中に文字起こし結果を受信。
  • マルチモーダルインタラクション: 1つのリアルタイムセッションで音声に加え画像・テキストを受け入れ、音声、テキスト、または両方を返却。

FAQ

GA Realtime API使用時にベータヘッダーは必要ですか?

GAリクエストでは、ドキュメントによりOpenAI-Beta: realtime=v1ヘッダーを削除するよう記載。ベータ挙動を維持する場合は、そのヘッダーを引き続き含めてください。

クライアントサイド(ブラウザ)Realtimeセッションの認証情報をどう生成しますか?

GAインターフェースでは、ドキュメントが単一のRESTエンドポイントPOST /v1/realtime/client_secretsを説明。クライアントからWebRTCまたはWebSocket接続を初期化するためのキーを生成。例ではセッション設定を作成し、そのエンドポイントにPOST。

WebRTCとWebSocketの実行場所の違いは?

ドキュメントではWebRTCをブラウザ/クライアントサイドインタラクションに最適、WebSocketを一貫した低遅延ネットワーク接続を持つミドルティアサーバーアプリケーションに最適と位置づけ。

WebRTC SDP取得のURL変更は?

ブラウザでWebRTCセッションを初期化時、SDP経由でリモートセッション情報を取得するURLは/v1/realtime/callsに変更。

フル音声エージェント挙動なしでRealtime APIを文字起こしに使用できますか?

はい。ドキュメントはWebSocket接続経由で音声ストリームをリアルタイム文字起こしするリアルタイム音声文字起こしを明示的に記載。

代替案

  • Realtime プリミティブに直接構築せずに TypeScript の Agents SDK を使用: ブラウザ(WebRTC)とサーバー(WebSocket)の接続性を裏側で Realtime を活用しつつ、音声エージェントのオーケストレーションに集中できます。
  • ストリーミングではなくリクエスト/レスポンス文字起こしパイプラインを構築: アプリがリアルタイムオーディオ処理を必要としない場合、Realtime で説明されるイベント駆動のセッションアプローチを避け、非リアルタイムの文字起こしワークフローを使用できます。
  • 音声向けその他のリアルタイム通信アプローチ: 電話特化のフローが必要な場合、Realtime 接続方法内で SIP ベースの統合が選択肢の一つです。それ以外は、デプロイに応じて WebRTC(ブラウザ)または WebSocket(サーバー)を選択してください。
  • 非リアルタイムエンドポイントを使用したマルチモーダルチャット: 遅延要件が「低遅延通信」ほど厳しくない場合、非リアルタイムのマルチモーダルチャットアプローチが適する可能性がありますが、Realtime ドキュメントで説明されるストリーミング/イベントセッションワークフローを使用しません。