5日差で出た2つの全二重音声モデル
2026年9月15日、Googleが Gemini 3.8 Live と Gemini 3.8 Live Extended Thinking を公開しました。 Gemini API・Google AI Studio・Gemini Enterprise(プライベートプレビュー)・Search Live・Gemini Live・Google Workspace へ同時に展開されています。
タイミングが面白いところで、その5日前の9月10日にOpenAIが GPT-Live-1 をAPI公開したばかりでした。 全二重(聞きながら話す)音声モデルのAPIが1週間のうちに2つ揃ったわけですが、この2つは「推論をどこに置くか」の設計が真逆です。 そしてその差は、そのまま課金構造と、あなたが書くイベントハンドラの形に効いてきます。
本記事では、Gemini 3.8 Live が何を変えたのかを「2モデルの棲み分け」「非同期推論が壊す前提」「非同期function calling」「課金構造」の4点で整理します。
ここまでの流れ
gpt-realtime GA
OpenAIのRealtime APIが正式版へ。半二重(ターン制)のまま、MCP・SIP・画像入力に対応。
GPT-Live 公開(ChatGPT)
OpenAIが全二重モデルをChatGPTに投入。ただしAPIは未提供で、開発者はRealtime APIを使い続けていた。
GPT-Live-1 API公開
$0.05/分で全二重の音声層をAPI提供。推論は別モデルへ委譲する2層構成で、バックエンドのトークンは別課金。
Gemini 3.8 Live / Extended Thinking 公開
推論を同一モデル内で非同期に回す方式。音声入出力の従量課金にthinkingトークンを含む。
2つのモデルをどう使い分けるか
まず名前が紛らわしいので整理します。今回出たのは以下の2つです。
| 項目 | Gemini 3.8 Live | Gemini 3.8 Live Extended Thinking |
|---|---|---|
| モデルID | gemini-3.8-live | gemini-3.8-live-extended-thinking |
| 位置づけ | スケールとコスト効率重視 | 多段推論が要る複雑タスク向け |
| 入力上限 | 131,072 トークン | 131,072 トークン |
| 出力上限 | 65,536 トークン | 65,536 トークン |
| 入力モダリティ | テキスト / 画像 / 音声 / 動画 | テキスト / 画像 / 音声 / 動画 |
| 出力モダリティ | テキスト / 音声 | テキスト / 音声 |
| thinkingLevel | 非対応(省略必須) | low / medium / high(minimalは不可) |
| proactive audio | 明示的に有効化 | 常時ON(無効化不可) |
| function calling | 非同期(NON_BLOCKING) | 非同期のみ |
| Search grounding | 対応 | 対応 |
| code execution / caching / 構造化出力 | 非対応 | 非対応 |
非同期推論 — 「考え終わってから喋る」をやめた
Extended Thinking の一番の売りは、推論と発話を同時に走らせることです。 従来の音声エージェントは、複雑な質問が来ると次の順で固まっていました。
- ユーザーの発話終了を検出
- 推論(thinking)を開始 — ここで音声が完全に止まる
- 推論が終わったら音声生成を開始
2の間、ユーザーは無音を聞かされます。数秒の沈黙は電話越しだと「切れた?」と思われる長さで、 これが音声エージェントに重い推論を載せられなかった最大の理由でした。
Extended Thinking はこの2をバックグラウンドに逃がします。 推論を回しながら「少し確認しますね」といった繋ぎの発話を出し、 推論が終わった時点で会話に合流させる。人間が電話口でやっていることと同じ構造です。
sequenceDiagram
participant U as ユーザー
participant M as Extended Thinking
participant T as 外部API
U->>M: 先週の注文どうなってますか
M-->>U: 確認しますね
M->>T: check_order_status を非同期発行
M->>M: バックグラウンドで推論継続
U->>M: あと住所も変更したいです
M-->>U: 住所変更も承ります
T-->>M: 注文は発送済み
M-->>U: 注文は昨日発送済みでした
turnComplete が意味を失う
ここが移行時に一番刺さるポイントです。公式ドキュメントは明確にこう書いています。
非同期推論を使うモデルでは、turnComplete: true はもはやモデルがアイドル状態であることを意味しません。従来の Live API 実装では、turnComplete を「モデルの1ターンが終わった」という状態遷移のトリガーに使うのが定石でした。 UIのマイクアイコンを戻す、ログを1件確定する、次の処理をキックする——これらを turnComplete に紐づけていると、まだ裏で推論が走っている最中に「終わった」と判定してしまいます。
thinking_config の指定
推論の深さは thinking_level で3段階(low / medium / high)から選びます。 通常のGeminiにある minimal は Extended Thinking では選べません。include_thoughts を立てると思考サマリーを受け取れるので、デバッグ時は有効にしておくと挙動が追いやすくなります。
from google import genai
from google.genai import types
# proactive audio / affective dialog は v1beta が必要
client = genai.Client(http_options={'api_version': 'v1beta'})
config = types.LiveConnectConfig(
response_modalities=["AUDIO"],
thinking_config=types.ThinkingConfig(
thinking_level="high", # low / medium / high(minimalは不可)
include_thoughts=True, # 思考サマリーを受信(デバッグ用)
),
enable_affective_dialog=True, # ユーザーのトーンに応じて話し方を変える
realtime_input_config=types.RealtimeInputConfig(
automatic_activity_detection=types.AutomaticActivityDetection(
silence_duration_ms=600, # 推奨レンジは 500〜800ms
)
),
)
async with client.aio.live.connect(
model="gemini-3.8-live-extended-thinking",
config=config,
) as session:
...非同期 function calling と3つのスケジューリング
推論だけを非同期にしても、ツール呼び出しで会話が止まったら意味がありません。 そこで Gemini 3.8 Live では function calling も behavior: NON_BLOCKING に対応しました。 在庫照会やCRM問い合わせのように数秒かかる関数を、会話を止めずに投げられます。
check_order_status = {
"name": "check_order_status",
"description": "注文ステータスを問い合わせる。応答に数秒かかる",
"parameters": {
"type": "object",
"properties": {
"order_id": {"type": "string"},
},
"required": ["order_id"],
},
# これが無いと、関数が返るまで会話全体がブロックされる
"behavior": "NON_BLOCKING",
}非同期にした場合、結果が返ってきたときに「それをどう会話に差し込むか」を決める必要があります。 これが scheduling で、3種類あります。
| scheduling | 挙動 | 使いどころ |
|---|---|---|
| SILENT | 結果をコンテキストに入れるが、モデルは発話しない | ログ送信・分析イベントなど、ユーザーに伝える必要がない副作用 |
| WHEN_IDLE | ユーザーが話し終わって間が空いたときに伝える | 補足情報・参考情報。会話の流れを壊したくない場合 |
| INTERRUPTED | 進行中の発話を中断してでも即座に伝える | 在庫切れ・決済失敗など、遅れると手戻りが発生する情報 |
function_response = types.FunctionResponse(
name="check_order_status",
id=fc.id,
response={
"result": "発送済み / 追跡番号 1234",
"scheduling": "INTERRUPTED", # SILENT / WHEN_IDLE / INTERRUPTED
},
)
await session.send_tool_response(function_responses=[function_response])課金構造 — GPT-Live-1 との決定的な違い
ここが今回いちばん実務に効く差分です。両者の価格を並べます。
| 項目 | Gemini 3.8 Live 系 | GPT-Live-1 |
|---|---|---|
| 音声入力 | $3.00 / 1M tok($0.005/分) | 音声層として $0.05/分に包含 |
| 音声出力 | $12.00 / 1M tok($0.018/分) | 同上 |
| テキスト入力 / 出力 | $0.75 / $4.50 per 1M tok | — |
| 画像・動画入力 | $1.00 / 1M tok($0.002/分) | — |
| 推論(thinking)の課金 | 出力価格に含まれる | バックエンドモデルのトークンを別途課金 |
| 音声のみの概算 | 約 $0.023/分 | $0.05/分 + 推論 + ハーネス |
Gemini 側は3モデル(3.8 Live / 3.8 Live Extended Thinking / 3.1 Flash Live Preview)が横並びの同一価格で、 thinking トークンは出力価格に含まれます。 つまり Extended Thinking に切り替えても単価は変わらない——ただしthinking_level を high にすれば出力トークンが増えるので、実コストは推論の深さに比例して上がります。 値上げではなく従量で効いてくる形です。
対して GPT-Live-1 の $0.05/分は音声層だけの値段です。 GPT-Live は「対話を回す層」と「重い推論を別モデルに委譲する層」の2層構成なので、 実際の請求は音声層 + バックエンドモデルのトークン + エージェントハーネスの3段重ねになります。 $0.05 と $0.023 を並べて「倍以上違う」と読むのは正しくなく、実際の差はもっと開きます。
ベンチマーク
Google が示した数値は以下のとおりです。音声系のベンチマークは評価軸がまだ固まりきっていないので、 順位そのものより「どの軸で測られているか」を見るほうが実務では役に立ちます。
| ベンチマーク | スコア | 何を測っているか |
|---|---|---|
| Artificial Analysis Speech to Speech Quality Index | 82.6(Extended Thinking が総合1位) | 音声対話の総合品質 |
| τ-Voice | 68.6% | 音声エージェントのタスク完遂率 |
| Sierra τ-Voice-banking | 35.1% | 銀行業務という高難度ドメインでの完遂率 |
| Big Bench Audio | 97.7% | 音声入力に対する推論能力 |
| Speech Agent Arena | 2位(無印 3.8 Live) | 人間評価による対話の好ましさ |
注目すべきは τ-Voice-banking の 35.1% です。 総合品質で1位、音声推論で97.7%を出すモデルが、実業務ドメインのタスク完遂では3分の1しか通らない。 「会話は自然だが業務は任せきれない」という現在地を、これ以上ないほど正直に示している数字だと思います。 自動化率を見積もるなら、総合スコアではなくこちら側を基準に置くべきです。
97言語の自動検出
Gemini 3.8 Live は97言語を自動検出し、会話の途中で切り替えます。 「日本語で話していた顧客が固有名詞だけ英語で言う」「途中から英語に切り替える」といったケースで、 言語設定を明示しなくても追随します。
実装前に知っておきたい制約
- セッション長: 音声のみのセッションは15分が上限。ネイティブオーディオ系のコンテキストは128kトークンまで(それ以外のモデルは32k)。長時間の通話にはセッション再開の実装が要ります。
- v1beta 指定: proactive audio と affective dialog は
api_version: "v1beta"でないと有効になりません。設定を書いたのに効かない場合はまずここを疑ってください。 - 非対応機能: code execution・caching・file search・構造化出力・画像生成はいずれも非対応。構造化出力が無いので、関数の引数スキーマ側で構造を担保する設計になります。
- 音声フォーマット: 入力は 16kHz・16bit PCM・リトルエンディアン、出力は 24kHz。画像は 1FPS 以下のJPEG。
- VAD: 自動VADは既定で有効。
silenceDurationMsの推奨レンジは 500〜800ms。手動制御にする場合はdisabled: Trueにして activityStart / activityEnd を自前で送ります。 - ホスト提供のみ: セルフホストの選択肢はありません。データ所在地が要件になる案件では最初に確認が必要です。
接続まわりは LiveKit・Pipecat・Agora・Fishjam・LangChain・Vercel・Vision Agents などが対応済みなので、 WebSocket を自前で握るより、既存のパイプラインに 3.8 Live を差すほうが早いケースが多いはずです。
まとめ — 選ぶ基準
2つのアプローチは優劣ではなく、推論の置き場所をどちらに寄せたいかの違いです。
| 要件 | 向いている選択 |
|---|---|
| コストを読み切りたい / 単一ベンダーで完結させたい | Gemini 3.8 Live(分単価が音声だけで確定する) |
| 複雑な多段推論を会話中に走らせたい | Gemini 3.8 Live Extended Thinking |
| 推論モデルを自分で選びたい / 既存のOpenAIスタックがある | GPT-Live-1 + 任意のバックエンド |
| 多言語で言語切替が頻発する | Gemini 3.8 Live(97言語の自動検出) |
| レイテンシ要件が緩く、応答テキストを保持したい | 従来の STT + LLM + TTS パイプライン |
実装面でひとつだけ持ち帰るとすれば、turnComplete を状態遷移のトリガーに使わない、これに尽きます。 非同期推論は体験を大きく改善する一方で、「ターンが終わった」という前提を静かに壊します。 既存の Live API 実装を 3.8 系に載せ替えるなら、まずイベントハンドラを読み直すところから始めてください。
理解度チェック
Gemini 3.8 Live Extended Thinking では非同期推論が走るため、turnComplete: true はもはやモデルが【 】状態であることを意味しない。