メインコンテンツへスキップ
リアルタイム音声はベータ版で、ワークスペースごとにアクセスが制限されています。リアルタイムクライアントは SDK のソースにはありますが、公開済みのパッケージ(3.0.0、Rust は 0.2.0)にはありません。C++ を除くすべての SDK の次のリリースに含まれます。
接続してセッションを作成し(POST /v1/audio/realtime/sessions)、リレーの WebSocket を開いて relay.connected を待ちます。その後、PCM16 音声をストリーミングで送り、プロバイダーのイベントを読み取り、通話を終了して最終請求を受け取ります。リレーのプロトコル、警告、理由コードはリアルタイム音声セッションで説明しています。

言語ごとに必要なものをインストールする

client.realtime.connect() は API キーを送信するため、サーバー上でのみ呼び出してください。Node.js 22 以降にはグローバルの WebSocket があります。それより古いランタイムでは、ws パッケージをインストールするか、独自のコンストラクターを webSocket として渡してください。ブラウザーで実行する通話では、サーバーでセッションを作成し、ブラウザーで connectRealtimeSession() を使ってソケットを開きます。この関数はサーバーが作成したセッションを受け取ります。セッションに含まれる client_secret はそのセッション 1 つでのみ有効で、API キーは一切必要ありません。両方の手順はブラウザーからの通話で示しています。

通話する

すべてのイベントを読む

イベントタイプごとに購読する代わりに、セッションを反復処理します。反復はソケットが閉じると終了します。Python では、最初のイテレーターは connect() が戻ってから受信したイベントも、relay.connected から順に受け取ります。
Python: async with session: を使うと、ブロックを抜けるときに、通話がまだ終了していなければ end() で終了します。

ブラウザーからの通話

TypeScript のみです。Phaseo の API キーをブラウザーのコードに含めないでください。サーバーで client.realtime.createSession() を使ってセッションを作成し、レスポンスをページに返します。この関数は connect() と同じ model、voice、instructions、provider、metadata オプションを受け付けます。
TypeScript
ブラウザーでは connectRealtimeSession() でセッションに参加します。この関数はセッションの client_secret でリレーを開き、connect() と同じセッションオブジェクトを返します。
TypeScript
connectRealtimeSession(info, options) は connect() と同様に webSocket と connectTimeoutMs を受け付けます。リージョンのエンドポイントを使う場合は baseUrl(デフォルトは https://api.phaseo.app/v1)も指定できます。

接続オプション

どの SDK も、model(必須。例:openai/gpt-realtime-2)と省略可能な voice、instructions、provider、metadata をセッション作成リクエストに送り、デフォルトで 30 秒間 relay.connected を待ちます。

セッション

TypeScript と Python: その他の SDK にも同じ操作があります。音声は PCM16 のバイト列で、base64 エンコードは SDK が行います。プロバイダーのイベントは、各言語の JSON 型としてそのまま渡されます。end のデフォルトのタイムアウトは 60 秒です。

エラー

session.ended を受け取らずにソケットが閉じた場合、または end() がタイムアウトした場合、通話の終了はセッションクローズのエラーで失敗します。通話は引き続き課金されます。このエラーには最終請求のパス GET /v1/generations?id=realtime%3A<session_id> が含まれ、精算後にこのパスが最終コストを返します。 接続する前にリレーがセッションを終了した場合、または relay.connected が時間内に届かない場合、connect() は失敗します(Python は TimeoutError を送出し、Rust は RealtimeError::EndedBeforeConnecting または RealtimeError::ConnectTimeout を返します)。
最終更新日 2026年11月5日