3.9 KiB
3.9 KiB
语音通话测试检查清单
✅ 优化完成确认
- 服务器
.env文件已添加VOICE_CALL_IDLE_TIMEOUT=120 - 客户端分片参数已优化为官方推荐值(3200 bytes, 100ms)
- 服务器已重启(必须执行)
- 客户端已重新编译
🔧 服务器重启步骤
# 1. 停止旧进程
pkill -f "uvicorn.*main:app"
# 2. 确认进程已停止
ps aux | grep uvicorn
# 3. 启动新进程
cd /path/to/lover
uvicorn main:app --host 0.0.0.0 --port 30101 --reload
# 4. 确认启动成功
# 应该看到类似输出:
# INFO: Uvicorn running on http://0.0.0.0:30101
📱 客户端测试步骤
1. 准备工作
- 确保手机/模拟器已连接
- 确保网络连接正常
- 确保麦克风权限已授予
2. 测试流程
- 打开 App
- 进入语音通话页面
- 检查 WebSocket 连接状态(应该显示已连接)
- 按住"按住说话"按钮
- 清晰地说 3-5 秒的话(例如:"你好,今天天气怎么样?")
- 松开按钮
- 等待响应(应该在 10-20 秒内收到)
3. 预期结果
- 看到"发送中..."提示
- 看到"识别中..."提示
- 收到文字回复
- 听到语音回复
- 没有 "idle timeout" 错误
📊 日志检查
客户端日志关键信息
✅ 应该看到:
📦 开始分片发送(官方推荐参数)
📊 总大小: [大于 96000] bytes (3秒音频 = 96000 bytes)
📊 每片大小: 3200 bytes
📊 发送间隔: 100 ms
✅ 所有音频片段发送完成
✅ 结束标记发送成功
📋 收到控制消息, type: reply_text
🎵 收到音频数据流
📋 收到控制消息, type: reply_end
❌ 不应该看到:
❌ WebSocket 关闭, code: 1000
{"type":"error","msg":"idle timeout"}
服务器日志关键信息
✅ 应该看到:
ASR connection opened
ASR event end=True sentence=[识别的文字]
Handle sentence: [识别的文字]
[LLM 相关日志]
[TTS 相关日志]
❌ 不应该看到:
idle timeout
ASR error
🐛 常见问题
问题1:还是出现 "idle timeout"
检查:
- 服务器是否已重启?
.env配置是否正确?- 录音时长是否足够(至少 3 秒)?
解决:
# 确认配置
cat lover/.env | grep VOICE_CALL_IDLE_TIMEOUT
# 应该显示:
VOICE_CALL_IDLE_TIMEOUT=120
# 如果没有,手动添加后重启服务器
问题2:没有收到任何响应
检查:
- WebSocket 是否连接?
- 网络是否正常?
- 服务器是否运行?
解决:
# 检查服务器状态
curl http://192.168.1.141:30101/docs
# 应该返回 FastAPI 文档页面
问题3:录音时长太短
检查:
客户端日志中的 "总大小":
- 1 秒 = 32000 bytes ❌ 太短
- 3 秒 = 96000 bytes ✅ 合适
- 5 秒 = 160000 bytes ✅ 更好
解决:
- 说话时间延长到 3-5 秒
- 清晰发音,不要含糊
- 避免背景噪音
问题4:ASR 无法识别
可能原因:
- 音频质量差(噪音大)
- 说话不清晰
- 音频格式不对
解决:
- 在安静环境测试
- 清晰发音
- 确认录音格式为 PCM 16kHz 单声道
📞 需要帮助?
如果测试失败,请提供:
- 客户端日志(完整的,从按下按钮到收到响应)
- 服务器日志(查看
tail -f logs/app.log) - 录音信息:
- 总大小(bytes)
- 时长(秒)
- 片数
- 错误信息(如果有)
🎉 测试成功标志
当你看到以下情况,说明测试成功:
- ✅ 按住按钮,说话 3-5 秒
- ✅ 松开按钮,看到"发送中..."
- ✅ 看到"识别中..."
- ✅ 收到文字回复(例如:"你好呀,今天天气不错~")
- ✅ 听到语音回复(AI 的声音)
- ✅ 整个过程在 20 秒内完成
- ✅ 没有任何错误提示
恭喜!语音通话功能已正常工作!🎊