このドキュメントでは、Gemini Live API の使用時に発生する可能性のある問題のトラブルシューティングの手順について説明します。
接続が突然切れる
セッション接続が予期せず切断された場合は、トークン上限、セッション接続のタイムアウト、ネットワークの問題が原因である可能性があります。
動作
セッションがエラーコード 1000 または 1006 で切断されました。
考えられる原因
- コンテキスト ウィンドウの圧縮が有効になっておらず、コンテキスト トークンがセッションのコンテキスト トークン上限(最大 128,000)を超えている。
- セッション再開ロジックが実装されていないか、正しく実装されていません。
- インターネット接続が不安定である。
理由と解決策
トークンがセッションのコンテキスト トークン上限を超えている: セッションのコンテキスト トークン上限を超えないようにするには、コンテキスト圧縮を有効にします。モデルがチャット履歴の前の部分を断続的に破棄するため、会話の質に影響する可能性があります。
セッション接続の有効期限は 10 分: セッションの再開を管理して、より長いやり取りを可能にします。詳しくは、セッション再開のベスト プラクティスをご覧ください。
インターネット接続が不安定: インターネット接続の状態を確認します。安定性が変動すると、接続に関する問題が発生する可能性があります。
モデルがユーザーを理解できなかった
モデルが入力内容を理解していないと思われる場合は、音声が正しくフォーマットされていることを確認し、マイクの品質とバックグラウンド ノイズを考慮してください。
動作
モデルが関連性のない情報で応答する、誤った情報で応答する、ユーザーに繰り返すよう求める。
考えられる原因
- 入力音声形式が正しくありません。
- マイクの音質が良くない。
- 背景雑音が大きすぎる。
理由と解決策
入力音声形式が正しくない: 入力音声がリトル エンディアンの 16 ビット PCM 形式で、サンプリング レートが 16 kHz、モノラル チャンネルが 1 つであることを確認します。
マイクの音質が良くない: 短い音声を録音して再生し、マイクの音質をテストします。 マイクの音質が良くない場合は、音質の良いマイクを使用してみてください。
背景雑音が大きすぎる: 短い音声を録音して再生し、背景雑音のレベルをテストします。バックグラウンド ノイズのレベルが高すぎる場合は、マイクをユーザーに近づけるか、ノイズ キャンセリング機能が優れたマイクを使用してみてください。
モデルが応答しない
モデルからレスポンスが返ってこない場合は、音声アクティビティの検出オプションと WebSocket 接続を確認してください。
動作
モデルからのレスポンスがない。
考えられる原因
- VAD の設定が正しく設定されていない。
- WebSocket 接続が中断されました。
理由と解決策
VAD が正しく設定されていない: VAD がユーザーによって無効になっている。この場合、モデルはユーザーの発話を待ち続け、ユーザーに応答しません。VAD が無効になっている場合は、
ActivityStartイベントとActivityEndイベントをモデルに送信してください。WebSocket 接続が中断された: WebSocket 接続が中断されると、クライアントとサーバー間の通信は行われません。WebSocket 接続のステータスを確認し、正しく確立されていることを確認します。
モデルを中断できない
モデルが発話中に中断できない場合は、再生バッファとストリーミング音声が正しく処理されていることを確認してください。
動作
モデルはユーザーからの割り込みなしで話し続けます。
考えられる原因
- 再生バッファをフラッシュできませんでした。
- Gemini Live API に音声をストリーミングできませんでした。
- カスタマイズされた VAD が正しく実装されていない。
理由と解決策
再生バッファのフラッシュに失敗しました: クライアントは、モデルから割り込み信号を受信したら、すぐに再生バッファをフラッシュする必要があります。そうしないと、モデルは話し続けます。
Gemini Live API への音声のストリーミングに失敗しました: レイテンシを最小限に抑えるため、クライアントは 20 ~ 40 ミリ秒のチャンクで Gemini Live API に音声をストリーミングする必要があります。クライアントが Gemini Live API に音声をストリーミングできない場合、モデルはクライアントに割り込みシグナルを送信しません。
カスタマイズされた VAD が正しく実装されていない: カスタマイズされた VAD が発話の開始を認識できない場合、またはクライアントが
ActivityStart信号をモデルに送信できない場合、モデルは割り込み信号をクライアントに送信しません。
既知の制限事項
Gemini Live API には次の制限が適用されます。各項目には、利用可能な場合は軽減策が含まれています。
優先従量課金制はサポートされていません
Gemini Live API は、消費オプションとして優先従量課金制をサポートしていません。
音声は 1 ターンだけ変更できます
まれに、モデルが voice_name フィールドで設定した音声以外の音声で応答することがあります。変更は 1 ターンに限定され、次のターンでは構成された音声が再び使用されます。構成の変更は必要ありません。
長いターンでは、読み上げ速度が速くなることがあります
モデルが長い音声レスポンスを途切れることなく生成する場合、話す速度が徐々に速くなることがあります。この動作は、60 秒を超える単一のターンで最も顕著になります。ペースを一定に保つには、次の方法を使用します。
長い出力を分割する: モデルに長いテキスト ブロックを 1 回で読み取らせることは避けてください。長い回答は、100 語未満のチャンクまたは 50 秒未満の音声に分割します。
会話のターンテーキングを使用する: セグメント間でユーザーに制御を戻すインタラクティブなダイアログ パターンを採用します。
モデルが予期せず言語を切り替えることがある
ユーザーが設定された言語以外の言語で話しているとモデルが判断した場合、モデルはその言語で応答できます。意図しない切り替えの可能性を減らすには、language_code フィールドを設定し、システム指示で想定される言語を指定して、言語ヒントを提供します。詳細については、言語と音声を設定するをご覧ください。
数字のシーケンスが不整合な形で繰り返されることがある
ユーザーが電話番号、クレジット カード番号、口座番号などの個々の数字のシーケンスを話すと、モデルがシーケンスを繰り返す際に、数字が間違っていたり、欠落していたりすることがあります。このようなエラーを減らすには、モデルにシーケンスを 1 桁ずつ読み取り、数字が不明確な場合はシーケンスをゆっくりと繰り返すようユーザーに求めるシステム指示を追加します。