Gemini Live API入門:リアルタイム音声AIエージェント構築の3つの概念とWebSocket構造、公式コード解説

Google Gemini Live APIの最大の魅力は、単なる音声合成にとどまらないことです。彼はあなたの話を聞きながら即座に応答し、いつでもあなたが話を中断できるようにします。まるで本物の電話の会話のような感覚です。Google Cloud Techは最近、詳細なチュートリアルを発表し、全体のライブボイスエージェントを3つの部分に分解しました:Gemini Liveと従来のTTSの違い、3層アーキテクチャと1つのWebSocketコアループ、そしてエージェントに「命」を与える3つの重要な概念です。この記事では、このチュートリアルの核心内容を整理し、Googleが提供するコードリンクとドキュメントを添付して、リアルタイム音声AIエージェントを構築したい開発者に完全な概要を提供します。

Gemini Liveと従来のTTSの3つの違い:audio-to-audio + 双方向 + 即時ストリーミング

従来のテキスト音声合成(TTS)システムは非常に直接的に機能します:あなたがテキストを入力すると、彼は音声を出力します。単方向のパイプラインです。TTSシステムは話すことができますが、あなたの声を聞くことはできません。彼はあなたがそこにいるかどうかも知りません。

Gemini Liveは全く異なる方向に進んでいます:audio-to-audio、双方向で同時に進行します。彼はあなたの音声信号を直接受け取り、トーン、ポーズ、エネルギー、そしてあなたの話し方を検出し、即座に音声を生成してストリーミング出力します。

核心となる3つの違い:

  • 方向:TTSはtext → audioの単方向;Gemini Liveはaudio ↔ audioの双方向
  • 感知:TTSはあなたがいることを知らない;Gemini Liveはトーン、ポーズ、エネルギーなどの音声の手がかりを聞き取る
  • 時系列:TTSは全てのレスポンスが整うのを待ってから読み始める;Gemini Liveは考えながら話すことができ、答えを生成しながら音声をストリーミングし始める

言い換えれば、「TTSは読む、Liveは聞く」 — 従来のTTSは読み上げますが、Gemini Liveは本当にあなたの話を聞きます。

3層アーキテクチャ:ブラウザ + バックエンド + Gemini Live、WebSocket接続を使用

全体のライブボイスエージェントのアーキテクチャは3つの部分で構成されています:

  • ブラウザ:あなたのマイク音声をキャプチャし、Geminiの応答を再生する役割を担う
  • Gemini Live:ライブ音声モデルそのもの
  • バックエンド:Geminiとの長い接続を維持し、ブラウザとGemini間の音声チャネルとして機能する

ブラウザとバックエンド間の通信はWebSocketを使用し、一般的なHTTPリクエストではありません。その理由は、一般的なHTTPリクエストは「一度聞いて切断」するだけですが、ライブボイスは双方向の持続的な音声ストリームが必要なので、WebSocketを使用して長い接続を維持する必要があります。

バックエンドは実際に2つの並行タスクを実行しています:

  • タスクA:あなたのマイク音声を継続的にGeminiにストリーミングアップロードする
  • タスクB:Geminiの音声応答を受信し、ブラウザに再生するために送信する

2つのタスクは互いに独立して実行されるため、エージェントが話している間でもあなたは即座に中断できます。

核心ループは4ステップ:Open → Send → Receive → Play

実際にコードを書くとき、全体の対話は4つのステップのループになります:

  • Open:Gemini Liveとのセッションを開始する
  • Send:ブラウザがキャプチャしたマイク音声をバックエンドに送信する
  • Receive:バックエンドがGeminiの音声応答を受信し、ブラウザに送信する
  • Play:ブラウザが即座にGeminiの応答を再生する

Googleはチュートリアルの中で強調しています:「このループは非常にシンプルです — Open、Send、Receive、Play、他はすべて配管(接続の詳細)です。」このループをマスターすれば、すでに動作するボイスエージェントを持っています。

エージェントに「命」を与える3つの核心概念:VAD、Barge-in、Tools

4ステップのループをマスターした後、技術的にはエージェントは機能しますが、実際の対話体験とはまだ大きな距離があります。彼を「生き生きとした」ものにするためには、3つの進化した概念が必要です。

概念1:音声活動検出(VAD)、どうやってあなたが話し終わったかを知る?

VAD(Voice Activity Detection)は、モデルが自問自答し続けるプロセスです:今、誰かが話しているのか、それとも静音なのか?この判断により、モデルはあなたのターンの開始点と終了点を見つけることができます — つまり、あなたが話し始めた時と止めた時を知ることができます。

そのため、あなたのマイクはあなたが話していない時でも音声をモデルに継続的にストリーミングする必要があります。モデルはその「継続的なストリーム」を必要とし、あなたが口を開く瞬間をキャッチします。

良いニュースは、Gemini LiveのVADは内蔵されているため、あなた自身で書く必要はありません。

概念2:Barge-in、エージェントの話を中断できる

Barge-inの意味は、あなたがエージェントが話している時に割り込むことができ、エージェントは即座に停止するということです。トランシーバーではこれを実現できませんが、実際の人同士の会話では可能です。

Gemini Live内部では、同じVADメカニズムを使用して、あなたが「エージェントの上で話を奪おうとしている」かどうかを検出します。中断が検出されると、モデルは即座に自分を停止し、「interrupted」信号をバックエンドに送信します。

中断を即時に感じさせるための重要なテクニック:

  • 中断信号がネットワークを越えてからローカル音声を停止しない
  • ブラウザがマイクから「あなたが話し始めた」と「聞こえた」瞬間に、既存のエージェントの音声再生を即座に一時停止する
  • あなたの音声入力が完了したら、モデルの中断信号で状態を確認する

この「ローカル即停止」の設計が、中断を自然に感じさせる秘密です。

概念3:Tools、エージェントに実際のスキルを与える

Gemini Liveモデル自体は話すことしかできません — 彼には音楽を再生したり、スキップしたり、ボタンを押したりする能力がありません。だから、あなたは彼にツールを与える必要があります — 各ツールには自分の名前、説明、アクションを表すものがあります。

チュートリアル内のデモツールの例:

  • play_playlist:プレイリストを再生する
  • skip_current_track:現在の曲をスキップする
  • pause_music:音楽を一時停止する

動作モードは、モデルがどのツールを使用するかを決定した後、単に「何をするかを話す」のではなく、「このツール + これらの引数を使用する」という指示を直接発信し、あなたのバックエンドコードが実行した後に結果を報告します。

Googleは特に音声の制限に関するルールを強調しています:「tool-latency rule」:「ツールが実行中の時、モデルは待機しています。」もしツールが長時間返さない場合、対話は静音状態に入ります。したがって、あなたの音楽ツールは指令を見つけたら即座に返すべきであり、曲が終わるのを待ってから応答しないでください。

3つの主要な概念を一言でまとめると:VADがあなたのターンを捉え、Barge-inがあなたを中断させ、Toolsがエージェントに仕事をさせるということです。

小結:raw APIとGoogle ADKの選択

今回のチュートリアルの実装デモは、意図的にraw GenAI SDKを使用しています — 開発者は各部分(セッション、ストリーム、オーディオループ、ツール)の動作原理を完全にフレームワークに隠されることなく見ることができます。しかし、その分多くの配管コードを書く必要があります。

Googleが言及した次回のエピソードでは、Google ADK(エージェント開発キット)を使用する予定で、これはこの種のボイスエージェントにフレームワークを提供するものです:

  • エージェント、セッション、ストリーミングループはすべてフレームワークによって管理される
  • 内蔵キューがライブコールをスムーズに保つ
  • 開発者は高レベルのビジネスロジック(ツール、プロンプト)を書くのみ

もしあなたがライブボイスエージェントをすぐに試したいだけなら、ADKがより扱いやすい選択肢になるでしょう;もしあなたがその背後にある動作原理を理解したり、大量のカスタマイズを行いたいのであれば、今回のチュートリアルのraw APIがより明確です。

公式完全リソース

  • デモコード:[g.dev/cloud/voicedemo1](https://g.dev/cloud/voicedemo1)
  • Gemini Live APIドキュメント:[g.dev/cloud/gemini-live](https://g.dev/cloud/gemini-live)
  • エージェント開発キットドキュメント:[g.dev/cloud/adk-docs](https://g.dev/cloud/adk-docs)
  • Google Cloudロードマップ:[g.dev/cloud/mma-roadmap](https://g.dev/cloud/mma-roadmap)
  • 次回予告:Google ADKを使用して同じボイスエージェントアプリを再構築する

Nakumura
Nakumura
関連サイト:中文版 / TechRitualThe Base Principle