3行でいうと
- 音声そのものを扱うAIは、「音声対音声」の1つの接続で、聞く・考える・話すを続けてやる
- 料金は2種類。OpenAIのRealtimeは音声トークンの量、GPT-Liveは接続している秒数
- 会話が進むほど、過去の会話を毎回読み直す分の入力が増える。キャッシュの有無で費用が変わる
この記事は、実際に使って確かめた記録ではありません。この記事は公式の文書を読んでまとめたものです。OpenAIとGoogleの価格は2026年10月22日に料金ページで読み直しました。変わることがあります。
先に結論
- 声で会話するアプリの作り方は、大きく3つあります。(1)音声を直接扱うモデルに接続する、(2)聞き取り・考える・話すを別々の部品でつなぐ、(3)OpenAIのGPT-Liveのように、会話担当と、考える担当(バックエンド)を分ける、です。
- 遅延は「モデルの速さ」だけで決まらず、接続の方式、話し終わりの判定、ツール呼び出しの待ち時間が重なります。公式文書には、遅延の具体的な秒数は載っていませんでした。
- 料金は、会話が長くなるほど、また過去の会話を読み直すほど増えます。キャッシュ、セッションを閉じるタイミング、モデルの大きさが費用を左右します。
前提:言葉の整理
- APIは、アプリの中からAIを呼び出す窓口です。リアルタイムは、音声を細かく区切って流し続け、返事も流れて戻ってくる方式です。
- 音声対音声(speech-to-speech)は、音声を文字に直さず、モデルが音声のまま聞いて、音声のまま話す方式です。OpenAIの文書は、このモデルが「音声を直接扱い、会話の状態を持ち、ツールを呼べる」と説明しています。
- WebSocketは、サーバーと長くつなぎっぱなしにして、双方向でデータを送る通信です。WebRTCは、ブラウザなどで音声や映像をやり取りする標準の仕組みで、音声は専用の経路(メディアトラック)で、操作の指示は別の経路(データチャンネル)で送ります。
- VAD(音声区間検出)は、人が話し始めた・話し終えた、を自動で見つける仕組みです。
- 割り込み(バージイン)は、AIが話している途中で人が話しかけ、AIが話すのをやめる動作です。
- 全二重は、聞きながら話せることです。電話のように、双方が同時に話せます。
作り方の違い
OpenAI
OpenAIの文書は、3つの構成を並べています。
| 構成 | 向く場面 | 公式の説明 |
|---|---|---|
| GPT-Live | 全二重の会話と、別のバックエンドの組み合わせ | 既存のテキストの仕組みをそのまま使い、バックエンドを自由に選べる |
| Realtime API | 聞く・考える・ツールを使う、を1つのセッションで | 1つのモデルが音声を理解し、判断し、声で返す |
| 連鎖型の音声パイプライン | 各段階を自分で管理したい | 音声認識、エージェント、音声合成を別々に差し替えられる |
- GPT-Liveは、聞きながら話せる全二重のモデル(gpt-live-1)です。会話は会話担当が受け持ち、調べ物やツールの利用は別のバックエンド(裏側で考える部分)に委ねます(委任)。ユーザーは、バックエンドが動いている間も話し続けられます。バックエンドは、OpenAIが用意するモデルを使う方式と、自分のエージェントをつなぐ方式から選びます。
- Realtime APIは、gpt-realtime-2.1が最新として載っています。入力は文字・音声・画像、出力は文字・音声です。文脈は12.8万トークン、最大出力は3.2万トークンです。
Google(Gemini Live API)
- 入力は音声(16ビットPCM、16kHz)、画像(JPEGで毎秒1枚以下)、文字。出力は音声(16ビットPCM、24kHz)です。接続は状態を持つWebSocket(WSS)です。
- 公式の説明では、70の言語で会話でき、いつでも割り込めます。ツール(関数呼び出し、Google検索)や、入力・出力の文字起こしも使えます。
- 既定の選択肢はgemini-3.8-liveで、推論による遅れを抑えた、ほとんどの音声エージェント向けのモデルです。より深い背景の推論が要るときは、gemini-3.8-live-extended-thinkingが勧められています。古いgemini-3.1-flash-live-previewは更新が勧められています。
- 接続の方法は、サーバー経由と、ブラウザから直接の2通りです。直接接続は性能が良く簡単ですが、本番では、一時鍵(短い期間だけ使える使い捨ての鍵。本物のAPIキーをブラウザに置かないために使う)の使用が勧められています。LiveKit、Pipecatなどの外部サービスを通じて、WebRTCで使う道も案内されています。
通信のしくみ
- OpenAI:ブラウザやモバイルのように、利用者の機器から直接つなぐなら、文書は一貫した性能のためにWebRTCを勧めています。サーバー側の音声処理には、WebSocketを使います。音声はbase64(バイナリを文字にする符号化)で、JSONのメッセージの中に入れて送ります。GPT-LiveのWebSocketの文書では、24kHzの16ビットPCMが既定で、16kHzのPCMや、電話向けのG.711(8kHz)も選べます。Realtimeの音声形式は、読んだ範囲では確認できていません。
- Google:WebSocketが基本です。音声は常に16ビットPCMで、入力は16kHzが自然ですが、他の周波数でも送れます(API側で変換)。出力は24kHzです。
話し終わりの判定と割り込み
遅延の体感に最も影響するのは、「いつ話し終わったと判断するか」です。
- OpenAI:VADは既定でオンです。
server_vadは無音の長さで区切ります。公式の設定例は、しきい値0.5、発話の前に300ミリ秒を含める、無音500ミリ秒で終了、です。semantic_vadは、話した言葉の内容から、話し終えた確率を判定します。確率が低ければ待ち、高ければ待たずに進みます。言いよどんで中断されにくくなります。「eagerness」の設定(low、medium、high、auto)で、待ち方を調整できます。 - Google:既定で、連続する音声に自動のVADが働きます。割り込みを検出すると、進行中の生成は取り消されて破棄され、すでにクライアントへ送った分だけが履歴に残ります。保留中の関数呼び出しも破棄されます。公式の推奨は、無音の判定を500〜800ミリ秒にする設定で、サーバーの既定は約800ミリ秒です。2000ミリ秒以上にすると、返事までの体感が長くなる、と書かれています。手動のVADや、自動と手動を組み合わせた方式(ハイブリッド)もあります。
見立てです。短くするほど返事は早く感じられますが、話の途中で割り込んでしまう危険が増えます。
遅延の考え方
公式文書には、「何ミリ秒」という保証は見当たりませんでした。OpenAIの文書は、遅延の測り方として次を示しています。
- 利用者が待つのは、「役に立つ返事が声で聞こえるまで」の時間です。
- バックエンドの時間は別に測ります。中央値と95パーセンタイル(遅い側の5%の境目)の両方を、似た通話で比べます。
見立てです。遅延は、次の部品の合計です。(1)接続の確立、(2)話し終わりの判定の待ち、(3)モデルの処理、(4)ツールの待ち、(5)再生の準備。公式資料は、WebRTCの初期接続を短くする仕組み(WARP)も案内しています。
料金
OpenAI
| 製品 | 単位 | 価格(米ドル) |
|---|---|---|
| gpt-realtime-2.1(音声) | 100万トークン | 入力32、キャッシュ入力0.40、出力64 |
| gpt-realtime-2.1(文字) | 100万トークン | 入力4、キャッシュ入力0.40、出力24 |
| gpt-realtime-2.1(画像) | 100万トークン | 入力5、キャッシュ入力0.50 |
| gpt-realtime-2.1-mini(音声) | 100万トークン | 入力10、キャッシュ入力0.30、出力20 |
| gpt-realtime-2.1-mini(文字) | 100万トークン | 入力0.60、キャッシュ入力0.06、出力2.40 |
| gpt-live-1(会話の部分) | 1分(秒単位で課金) | 0.05 |
- gpt-realtime-2.1は、料金ページとモデルのページの2か所で同じ値を確認しました(10月22日に再確認)。miniは料金ページで再確認しました。miniのモデルのページは、10月22日には読み直していません(10月8日に確認)。
- GPT-Liveは、会話の部分だけの料金です。バックエンドのモデルやツールの利用は、別に課金されます。WebRTCのセッションを作ると、15秒分が初期化として課金され、動き出した後の時間から差し引かれます(二重に請求されるわけではない、と文書にあります)。
- Realtime APIの文書によれば、音声のトークンは、ユーザーの発話が100ミリ秒で1トークン、AIの発話が50ミリ秒で1トークンです。この数字は、読んだページのうち1か所(Realtimeの費用のページ)でしか確認できていません。
- gemini-3.8-live(有料枠、100万トークンあたり):入力は文字0.75ドル、音声3.00ドル(1分あたり0.005ドル)、画像・動画1.00ドル(1分あたり0.002ドル)。出力は文字4.50ドル、音声12.00ドル(1分あたり0.018ドル)。思考のトークンを含みます。無料枠は無料ですが、無料枠の内容は製品の改善に使われます。有料枠では使われません。
- 音声は1秒あたり25トークンで数えられます(media resolutionの文書)。25×60=1,500トークン、これに3ドルをかけると1分あたり約0.0045ドルで、公式の0.005ドルと近い値です(僕らの計算です)。
会話1回の費用の見積り(OpenAI Realtime)
僕らの計算です。次の仮定です。1回15秒の発話を10往復(ユーザーの音声10トークン/秒、AIの音声20トークン/秒)。指示文、文字起こし、ツール呼び出しは含めません。
- ユーザー1回150トークン、AI1回300トークン。出力は計3,000トークンで0.192ドル。
- 公式文書の説明では、毎回の返事のとき、それまでの会話全体が入力として送られます。入力の累計は21,750トークンです。
- キャッシュなしの場合、入力は約0.696ドル、合計で約0.89ドルです。
- 過去の分がキャッシュされる場合(新しい分1,500トークンだけ通常価格)、入力は約0.056ドル、合計で約0.25ドルです。
キャッシュは「最善の努力」で、保証はない、と文書にあります。会話の途中で指示やツールの定義を変えると、キャッシュの効きが落ちます。
なお、GPT-Liveの5分の会話部分は0.05ドル×5=0.25ドルですが(僕らの計算)、バックエンド費用が別にかかるため、直接の比較には使えません。
公式の短い例と、費用を下げる方法
Realtime APIのブラウザ向けの例(OpenAI公式文書の例です。この記事では、実行していません)
import { RealtimeAgent, RealtimeSession } from "@openai/agents/realtime";
const agent = new RealtimeAgent({
name: "Assistant",
instructions: "You are a helpful voice assistant.",
});
const session = new RealtimeSession(agent, {
model: "gpt-realtime-2.1",
});
await session.connect({ apiKey: "ek_...(ephemeral key)" });
公式の流れは次のとおりです。(1)自分のサーバーが一時鍵を作る、(2)フロントエンドがセッションを作る、(3)ブラウザならWebRTC、サーバーならWebSocketで接続、(4)エージェントが音声の出入り、ツール、割り込み、引き継ぎを扱う。
OpenAIの費用を下げる方法(公式の記述)
- 会話の古い部分を捨てる(切り詰め)。
token_limits.post_instructionsで、指示を除く入力の上限を決める。retention_ratioを1未満にすると、一度に多めに捨て、キャッシュが毎回無効になるのを避けられる。ただし、モデルの記憶は減る。 - 古い会話を要約に置き換える(
conversation.item.delete、conversation.item.create)。 - 小さい(mini)モデルを使う。ただし、指示への従い方や関数呼び出しは弱くなりうるので、まず大きいモデルで調整してから試す、とされている。
- GPT-Liveでは、待ち時間を減らす(ツールの並列実行など)と、会話の秒数が減って費用も下がる。長い作業の間はセッションを閉じる。公式の説明では、閉じると、待機中の1分あたり0.05ドルを節約できる。再開の費用と体験への影響と比べて決める。
- 使用量の記録:Realtimeは
response.doneのusageを読む。GPT-Liveはsession.usage.updatedが累積の秒数を返すので、足し合わせずに、session.closedの最終値を1回だけ記録する。
セッションの長さと制限
- OpenAI Realtime:1セッションの最大は60分です。
- GPT-Live:同時セッション数で制限されます(Buildが50、Launchが300、Growが500)。無料枠は対象外です。Realtime(gpt-realtime-2.1)は、1分あたりのリクエストとトークンの上限(Buildで400リクエスト、20万トークン)です。
- Gemini Live:圧縮なしでは、音声のみは15分、音声と映像は2分で終わります。コンテキストの圧縮(スライディングウィンドウ)で、時間の上限を超えて延ばせます。接続自体は約10分で切れますが、セッション再開(resumption)で同じセッションを複数の接続にわたって続けられます。切断の前にGoAwayという予告が届き、再開用の鍵は切断から2時間有効です。
選び方・判断の基準
見立てです。公式資料を読んだうえでの、僕らの整理です。
- 会話の自然さと、裏で動く処理を分けたい:GPT-Liveのように会話と処理を分ける作りが合うと思います。
- 音声のまま、ツールも使うシンプルな構成:Realtime APIやGemini Live APIの音声対音声が向きます。
- 途中の文字を記録・検査したい(コンプライアンスなど):連鎖型にすると、各段階で文字を取り出せます。
- ブラウザから直接:OpenAIはWebRTC、Googleは一時鍵つきのWebSocketが基本です。
よくあるつまずき
見立てです。公式資料を読んで、読み違えやすいと思った点を挙げます。
- 音声の料金を「1分いくら」と思い込む。OpenAI Realtimeはトークン課金で、会話が進むほど入力が増えます。GPT-Liveは秒課金でも、バックエンドは別です。
- マイクをミュートすれば課金が止まると思う。GPT-Liveの文書は、ミュートしてもセッションは続く、と書いています。
- Geminiのモデル名は入れ替わりが早く、gemini-3.1-flash-live-previewのように、新しいモデルへの移行が案内されている古い名前もあります。使うモデルは最新の一覧で確認してください。
気をつけること
- この記事は、これらのAPIで会話アプリを作って確かめた記録ではありません。内容は公式文書の記述に基づきます。
- 遅延の実測値は、公式文書に書かれておらず、ここにも載せていません。体感は、通信環境と設定で変わります。
- OpenAIの音声トークンの換算(100ミリ秒で1トークン、50ミリ秒で1トークン)は、1か所でしか確認できていません。費用の見積りは、この換算に依存します。
- Geminiが過去の会話を再び読み直す分をどう課金するかは、読んだ資料では確認できていません。このため、OpenAIとGoogleの1回の会話の費用を比べていません。
- GPT-Liveは、画像と動画を入力に使えません(モデルのページ)。一方、Realtime(2.1)は画像を入力にできます。
- 価格、モデル名、上限は変わります。特に新しいモデル名は短期間で入れ替わります。使う前に各社のページを確認してください。
- 音声には、録音・同意・個人情報の問題があります。法的な扱いは、この記事の範囲外です。個別の判断は専門家に相談してください。
出典
- Getting started with the Realtime API(OpenAI API Docs、OpenAI、2026年10月22日確認)
- Voice agents(OpenAI API Docs、OpenAI、2026年10月8日確認)
- Audio and voice(OpenAI API Docs、OpenAI、2026年10月8日確認)
- Getting started with GPT-Live(OpenAI API Docs、OpenAI、2026年10月22日確認)
- Cost optimization(OpenAI API Docs、OpenAI、2026年10月22日確認)
- Realtime conversations(OpenAI API Docs、OpenAI、2026年10月22日確認)
- Voice activity detection(OpenAI API Docs、OpenAI、2026年10月8日確認)
- WebRTC(OpenAI API Docs、OpenAI、2026年10月8日確認)
- WebSockets(OpenAI API Docs、OpenAI、2026年10月8日確認)
- GPT-Realtime-2.1(OpenAI API Docs、OpenAI、2026年10月22日確認)
- GPT-Realtime-2.1 Mini(OpenAI API Docs、OpenAI、2026年10月8日確認)
- GPT-Live 1(OpenAI API Docs、OpenAI、2026年10月22日確認)
- Pricing(OpenAI API Docs、OpenAI、2026年10月22日確認)
- Realtime costs(OpenAI API Docs、OpenAI、2026年10月22日確認)
- Live API overview(Gemini API、Google AI for Developers、2026年10月22日確認)
- Live API capabilities guide(Gemini API、Google AI for Developers、2026年10月8日確認)
- Live API capabilities(Gemini API、Google AI for Developers、2026年10月8日確認)
- Session management with Live API(Gemini API、Google AI for Developers、2026年10月22日確認)
- Gemini 3.8 Live(Gemini API、Google AI for Developers、2026年10月22日確認)
- Gemini 3.8 Live Extended Thinking(Gemini API、Google AI for Developers、2026年10月22日確認)
- Gemini Developer API pricing(Google AI for Developers、Google、2026年10月22日確認)
- Media resolution(Gemini API、Google AI for Developers、2026年10月8日確認)
更新履歴
-
2026年10月25日 書き方を直しました。
- 前:運営者が使っていないと読める書き方 → いま:「この記事は、実際に使って確かめた記録ではありません」。公式の資料を読んでまとめた記事で、使い心地は書いていない、という意味に直した
-
2026年10月22日 公式の資料を読み直して、次の点を直しました。
- 前:gpt-realtime-2.1-miniの価格は、料金ページとモデルのページの2か所で確認 → いま:料金ページで再確認。モデルのページは10月22日には読み直さず、10月8日の確認のまま
- 前:Gemini Liveの文書の例に古いモデル名(2.5 Flash Native Audio)が残っている → いま:モデル名は入れ替わりが早く、新しいモデルへの移行が案内されている古い名前もある
