Gemini Live API を使用した双方向ストリーミング



Gemini Live API を使用すると、Gemini との低レイテンシの双方向テキストと音声のやり取りが可能になります。Live API を使用すると、エンドユーザーに自然で人間のような音声会話のエクスペリエンスを提供できます。また、テキストまたは音声コマンドを使用してモデルのレスポンスを中断することもできます。このモデルは、テキストと音声の入力を処理でき(動画は近日提供予定)、テキストと音声の出力を生成できます。

プロトタイプは、Vertex AI Studio のプロンプトと Live API を使用して作成できます。

Live API は、WebSocket 接続を作成してクライアントと Gemini サーバー間のセッションを確立するステートフル API です。詳細については、Live API リファレンス ドキュメントをご覧ください。

始める前に

まだ行っていない場合は、スタートガイドを完了します。このガイドでは、Firebase プロジェクトの設定、アプリの Firebase への接続、SDK の追加、Vertex AI サービスの初期化、LiveModel インスタンスの作成方法について説明します。

Live API を使用するには、次の点に注意してください。

  • 少なくとも次のバージョンの Firebase ライブラリを使用していることを確認します。
    iOS+: 未サポート | Android: v16.3.0 以降(BoM: v33.12.0 以降)| ウェブ: 未サポート | Flutter: v1.5.0 以降(BoM: v3.9.0 以降)

  • LiveModel インスタンス(GenerativeModel インスタンスではない)を作成します。

この機能をサポートするモデル

Live APIgemini-2.0-flash-live-preview-04-09 でのみサポートされています(gemini-2.0-flash ではサポートされていません)。

Live API の標準機能を使用する

このセクションでは、Live API の標準機能の使用方法について説明します。具体的には、さまざまなタイプの入力と出力をストリーミングする方法について説明します。

テキストの送受信

ストリーミングされたテキスト入力を送信し、ストリーミングされたテキスト出力を受信できます。必ず liveModel インスタンスを作成し、レスポンス モダリティを Text に設定してください。

ユースケースとアプリに適したモデルと、必要に応じてロケーションを選択する方法を学びます。

音声を送信、受信する

ストリーミングされた音声入力を送信し、ストリーミングされた音声出力を受信できます。必ず LiveModel インスタンスを作成し、レスポンス モダリティを Audio に設定してください。

応答音声の設定とカスタマイズ方法(このページの後半)をご覧ください。

ユースケースとアプリに適したモデルと、必要に応じてロケーションを選択する方法を学びます。



より魅力的でインタラクティブなエクスペリエンスを作成する

このセクションでは、Live API のより魅力的でインタラクティブな機能を作成して管理する方法について説明します。

返信音声を変更する

Live API は Chirp 3 を使用して、合成音声レスポンスをサポートします。Vertex AI in Firebase を使用すると、5 種類の HD ボイスと 31 の言語で音声を送信できます。

音声を指定しない場合、デフォルトは Puck です。または、次のいずれかの音声で応答するようにモデルを構成することもできます。

Aoede(女性)
Charon(男性)
Fenrir(男性)
Kore(女性)
Puck(男性)

これらの音声のデモと、使用可能な言語の一覧については、Chirp 3: HD 音声をご覧ください。

音声を指定するには、モデル構成の一部として speechConfig オブジェクト内に音声名を設定します。

英語以外の言語でモデルに応答するようプロンプトを表示して要求する場合は、システム指示に次の文言を含めてください。

RESPOND IN LANGUAGE. YOU MUST RESPOND UNMISTAKABLY IN LANGUAGE.

セッションとリクエスト間でコンテキストを維持する

チャット構造を使用すると、セッションとリクエスト間でコンテキストを維持できます。この機能は、テキスト入力とテキスト出力でのみ機能します。

このアプローチは、コンテキストが短い場合に最適です。ターンバイターンのインタラクションを送信して、イベントの正確なシーケンスを表すことができます。コンテキストが長い場合は、1 つのメッセージの概要を提供して、後続のインタラクション用にコンテキスト ウィンドウを空けておくことをおすすめします。

中断を処理する

Vertex AI in Firebase は、中断の処理をまだサポートしていません。しばらくしてからもう一度ご確認ください。

関数呼び出し(ツール)を使用する

標準のコンテンツ生成方法と同様に、Live API で使用できるツール(利用可能な関数など)を定義できます。このセクションでは、関数呼び出しで Live API を使用する際の注意事項について説明します。関数呼び出しの詳細な説明と例については、関数呼び出しガイドをご覧ください。

モデルは、単一のプロンプトから複数の関数呼び出しと、出力の連結に必要なコードを生成できます。このコードはサンドボックス環境で実行され、後続の BidiGenerateContentToolCall メッセージを生成します。各関数呼び出しの結果が表示されるまで実行は停止するため、順番どおりに処理が行われます。

また、関数呼び出しで Live API を使用すると、モデルがユーザーにフォローアップや明確化の情報をリクエストできるため、特に強力です。たとえば、モデルに、呼び出す関数にパラメータ値を提供するのに十分な情報がない場合、モデルはユーザーに詳細情報や明確な情報を提供するよう求める場合があります。

クライアントは BidiGenerateContentToolResponse を返します。



制限事項と要件

Live API には次の制限と要件があります。

音声文字変換

Vertex AI in Firebase は、まだ音声文字変換をサポートしていません。しばらくしてからもう一度ご確認ください。

言語

音声形式

Live API は、次のオーディオ形式をサポートしています。

  • 入力音声形式: RAW 16 ビット PCM 音声、16kHz、リトル エンディアン
  • 出力音声形式: RAW 16 ビット PCM 音声、24kHz、リトル エンディアン

レート上限

次のレート制限が適用されます。

  • Firebase プロジェクトあたり 10 個の同時実行セッション
  • 1 分あたり 400 万個のトークン

セッションの長さ

セッションのデフォルトの長さは 30 分です。セッション継続時間が上限を超えると、接続が終了します。

モデルはコンテキストのサイズによっても制限されます。大量の入力を送信すると、セッションが早期に終了する可能性があります。

音声アクティビティ検出(VAD)

モデルは、連続した音声入力ストリームに対して、音声アクティビティ検出(VAD)を自動的に実行します。VAD はデフォルトで有効になっています。

トークンのカウント

CountTokens API は Live API で使用できません。