本文档提供了在使用 Gemini Live API 时可能遇到的问题的排查步骤。
连接意外断开
如果会话连接意外断开,可能是由于令牌限制、会话连接超时或网络问题所致。
行为
会话已断开连接,错误代码为 1000 或 1006。
可能的原因
- 未启用上下文窗口压缩功能,且上下文 token 数量超过了会话的上下文 token 数量上限(最多 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信号,则模型不会向客户端发送中断信号。