GEMINI LABEN
TTS — gemini-3.1-flash-tts-previewが音声生成のストリーミングに対応し、streamGenerateContentから逐次再生できますTRANSLATE — Gemini 3.5 Live Translateが登場。70以上の言語を自動判定し、話者の抑揚を保ったまま音声から音声へ翻訳しますIMAGE — Nano Banana 2 Liteが提供開始となり、最も高速かつ低コストなGemini画像モデルになりましたOMNI — Gemini Omni Flashが公開プレビュー入りし、動画ワークフローを組めるネイティブマルチモーダルモデルとして使えますMODEL — Gemini 3.5 FlashがGA(正式版)となり、gemini-flash-latestの実体になりましたAGENT — Managed AgentsがGemini APIで公開プレビュー入り。分離されたGoogleホストのLinuxサンドボックスで自律エージェントを動かせますTTS — gemini-3.1-flash-tts-previewが音声生成のストリーミングに対応し、streamGenerateContentから逐次再生できますTRANSLATE — Gemini 3.5 Live Translateが登場。70以上の言語を自動判定し、話者の抑揚を保ったまま音声から音声へ翻訳しますIMAGE — Nano Banana 2 Liteが提供開始となり、最も高速かつ低コストなGemini画像モデルになりましたOMNI — Gemini Omni Flashが公開プレビュー入りし、動画ワークフローを組めるネイティブマルチモーダルモデルとして使えますMODEL — Gemini 3.5 FlashがGA(正式版)となり、gemini-flash-latestの実体になりましたAGENT — Managed AgentsがGemini APIで公開プレビュー入り。分離されたGoogleホストのLinuxサンドボックスで自律エージェントを動かせます
記事一覧/API / SDK
API / SDK/2026-07-05上級

アプリに会話翻訳を組み込む — Live API で音声から音声へ、遅延と切断に耐える設計

Gemini 3.5 Live Translate と Live API で、音声から音声への会話翻訳をアプリに組み込む設計をまとめました。セッション寿命・言語の自動切り替え・遅延バジェット・ストリーミング課金の勘所を、動くコードとともに整理しています。

Gemini Live API5Live Translate音声翻訳2リアルタイム4設計2

プレミアム記事

多言語対応を「文字」でしか考えていなかった頃の自分を、少し悔いています。

個人開発で癒し系のアプリをいくつか運用しているのですが、海外のユーザーさんから「音声のガイドも自分の言葉で聞きたい」という声をいただいたことがありました。当時の私は、テキストを翻訳して読み上げる方式しか思いつかず、話者の間や抑揚が失われた、どこか他人行儀な音声しか返せませんでした。

2026年7月に公開された Gemini 3.5 Live Translate は、その前提を静かに書き換えます。70以上の言語を自動で判定し、話者の抑揚を保ったまま、音声から音声へ翻訳する。文字を経由しないという一点が、体験の質をまるごと変えてしまいました。

ここでは、Live Translate の土台となる Live API を使って、会話翻訳をアプリに組み込むための設計を整理します。単なる呼び出し方ではなく、実運用で必ずつまずく「遅延」「言語の切り替わり」「切断」「コスト」の四つに、どう向き合うかを中心に書いていきます。

文字を経由しない、という設計上の分岐点

従来の翻訳フローは、音声認識・翻訳・音声合成という三つの独立した工程を直列につなぐものでした。それぞれの工程で待ち時間が生まれ、間や感情は文字に落ちる過程で削ぎ落とされます。

Live Translate と Live API が変えたのは、この三工程を一つの持続的なセッションに畳んだことです。音声を流し込むと、モデルが翻訳された音声を返す。中間表現としてのテキストは、必要なら受け取れますが、体験の主役ではなくなりました。

設計者にとっての意味は明確です。私たちはもう「認識精度」と「合成の自然さ」を別々にチューニングする世界にいません。代わりに、一本のストリームをいかに途切れさせず、いかに安く流し続けるかという、通信とセッションの設計問題に軸足が移ります。

最小構成 — セッションを張り、音声を流し、音声で受け取る

まずは骨格です。Live API は WebSocket 上で双方向にやり取りしますが、google-genai SDK が非同期セッションとして抽象化してくれます。

import asyncio
from google import genai
from google.genai import types
 
client = genai.Client(api_key="YOUR_API_KEY")
 
MODEL = "gemini-3.1-flash-live-preview"
 
config = {
    "response_modalities": ["AUDIO"],
    "system_instruction": (
        "あなたは同時通訳者です。話者が話した言語を検出し、"
        "英語の場合は日本語へ、日本語の場合は英語へ、"
        "抑揚と語調を保ったまま音声で通訳してください。"
        "要約や補足はせず、話された内容だけを訳します。"
    ),
    "input_audio_transcription": {},
    "output_audio_transcription": {},
}
 
 
async def translate_stream(mic_frames):
    async with client.aio.live.connect(model=MODEL, config=config) as session:
        async def pump_audio():
            async for chunk in mic_frames:  # 16-bit PCM / 16kHz / little-endian
                await session.send_realtime_input(
                    audio=types.Blob(data=chunk, mime_type="audio/pcm;rate=16000")
                )
 
        sender = asyncio.create_task(pump_audio())
 
        async for response in session.receive():
            content = response.server_content
            if not content:
                continue
            if content.input_transcription:
                print(f"[原文] {content.input_transcription.text}")
            if content.output_transcription:
                print(f"[訳文] {content.output_transcription.text}")
            if content.model_turn:
                for part in content.model_turn.parts:
                    if part.inline_data:
                        yield part.inline_data.data  # 24kHz PCM 音声
 
        await sender

要点は三つあります。入力音声は 16kHz の生 PCM で送ること、出力はネイティブ音声としてチャンクで返ること、そして書き起こし(transcription)は音声とは別に受け取れることです。

input_audio_transcriptionoutput_audio_transcription を有効にしておくと、字幕表示やログ、後述する言語判定のフックに使えます。音声だけを扱うつもりでも、この二つは開けておくことを推奨します。運用の可観測性が段違いになります。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
Live API セッションの張り方と、音声を流し込んで音声で受け取る最小構成の動くコード
遅延バジェットの分解と、切断・セッション寿命に耐える再接続の設計指針
ストリーミング音声のコストが積み上がる仕組みと、Live をやめてバッチに退避する判断基準
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Gemini Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

API / SDK2026-06-16
Gemini Live API のセッションが切れるたびに会話が消える — 期限切れトークンの再取得とセッション再開の実装メモ
Gemini Live API の WebSocket が再接続するたびに会話履歴とユーザーの発話を取りこぼす問題を、エフェメラルトークンの単発消費・セッション再開ハンドル・goAway 予告の3点から実装で塞ぐ運用メモです。
API / SDK2026-06-04
AdMob レポートの判定は Gemini にやらせない — 構造化出力を「抽出」に限定する設計
AdMob レポートからフロア(eCPM 下限値)を決めるとき、Gemini に判定そのものをやらせるのは危険です。構造化出力は「乱れたレポートを型付きデータに抽出する」工程だけに限定し、しきい値判定は決定論的なコードに置く——その設計理由と実装を、実際の 42 グループ運用の判定ルールとともにまとめました。
API / SDK2026-04-04
Gemini Live APIで音声エージェントを作る入門
Gemini Live APIを使ってリアルタイム音声会話ができる音声エージェントを構築する方法を解説。APIセットアップから実装例まで。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →