排解 Gemini Live API 問題

本文提供疑難排解步驟,協助您解決使用 Gemini Live API 時可能遇到的問題。

連線無預警中斷

如果工作階段連線意外中斷,可能是因為權杖用盡、工作階段連線逾時或網路問題。

行為

工作階段已中斷,錯誤代碼為 1000 或 1006。

可能原因

  • 脈絡窗口壓縮功能未啟用,且脈絡權杖超過工作階段的脈絡權杖上限 (最多 12.8 萬個)。
  • 未導入工作階段續傳邏輯,或續傳邏輯導入有誤。
  • 網際網路連線不穩定。

原因和解決方法

  • 權杖超出工作階段的內容權杖限制: 如要避免超出工作階段的內容權杖限制,請啟用內容壓縮功能。這可能會影響對話品質,因為模型會間歇性捨棄先前的對話記錄。

  • 工作階段連線會在 10 分鐘後過期: 管理工作階段續傳功能,延長互動時間。如需更多詳細資料,請參閱工作階段續傳最佳做法。

  • 網際網路連線不穩定: 請確認網際網路連線狀態,因為連線不穩可能會導致連線問題。

模型無法理解使用者

如果模型似乎無法理解你的輸入內容,請確認音訊格式是否正確,並考量麥克風品質和背景噪音。

行為

模型回覆不相關或錯誤的資訊,或要求使用者重複提問。

可能原因

  • 輸入的音訊格式有誤。
  • 麥克風品質不佳。
  • 背景噪音過大。

原因和解決方法

  • 輸入音訊格式不正確: 確認輸入音訊使用小端序 16 位元 PCM 格式,取樣率為 16 kHz,且只有單一單聲道。

  • 麥克風品質不佳: 錄製一小段音訊並播放,測試麥克風品質。 如果麥克風品質不佳,請改用音質較好的麥克風。

  • 背景噪音過高: 錄製一小段音訊並播放,測試背景噪音程度。如果背景噪音過大,請嘗試將麥克風靠近使用者,或使用降噪效果更好的麥克風。

模型沒有回應

如果模型沒有回應,請檢查語音活動偵測選項和 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 不支援優先即付即用做為用量選項。

語音可在一回合內變更

在極少數情況下,模型會使用您在 voice_name 欄位中設定的語音以外的語音回覆。這項變更僅限單一回合,後續回合會再次使用設定的聲音。不需要變更任何設定。

長時間的對話可能會加快語音速率

模型生成較長且不間斷的語音回覆時,說話速度可能會逐漸加快。如果單一回合超過 60 秒,這種情況會更加明顯。如要維持穩定配速,請採用下列方法:

  • 將長篇輸出內容分段: 避免提示模型在單一回合中讀取長篇文字。 將長篇回覆分成多個部分,每個部分不超過 100 字,或語音長度不超過 50 秒。

  • 使用對話輪流模式: 採用互動式對話模式,在各個區段之間將控制權交還給使用者。

模型可能會無預警切換語言

如果模型判斷使用者說的語言與設定的語言不同,就會以該語言回覆。如要降低非預期切換的機率,請設定 language_code 欄位,並在系統指令中說明預期語言,提供語言提示。詳情請參閱「設定語言和聲音」。

數字序列可能重複顯示,但順序不一致

如果使用者說出一連串的個別數字,例如電話號碼、卡號或帳號,模型可能會重複這串數字,但數字有誤或缺漏。如要減少這類錯誤,請新增系統指令,引導模型一次讀取一個數字,並在數字不清楚時要求使用者慢慢重複唸出數字。