Ai_GirlFriend/xuniYou/测试检查清单.md
2026-02-28 18:04:34 +08:00

168 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 语音通话测试检查清单
## ✅ 优化完成确认
- [x] 服务器 `.env` 文件已添加 `VOICE_CALL_IDLE_TIMEOUT=120`
- [x] 客户端分片参数已优化为官方推荐值3200 bytes, 100ms
- [ ] 服务器已重启(**必须执行**
- [ ] 客户端已重新编译
## 🔧 服务器重启步骤
```bash
# 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. 测试流程
1. [ ] 打开 App
2. [ ] 进入语音通话页面
3. [ ] 检查 WebSocket 连接状态(应该显示已连接)
4. [ ] 按住"按住说话"按钮
5. [ ] **清晰地说 3-5 秒的话**(例如:"你好,今天天气怎么样?"
6. [ ] 松开按钮
7. [ ] 等待响应(应该在 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 秒)?
**解决**
```bash
# 确认配置
cat lover/.env | grep VOICE_CALL_IDLE_TIMEOUT
# 应该显示:
VOICE_CALL_IDLE_TIMEOUT=120
# 如果没有,手动添加后重启服务器
```
### 问题2没有收到任何响应
**检查**
- [ ] WebSocket 是否连接?
- [ ] 网络是否正常?
- [ ] 服务器是否运行?
**解决**
```bash
# 检查服务器状态
curl http://192.168.1.141:30101/docs
# 应该返回 FastAPI 文档页面
```
### 问题3录音时长太短
**检查**
```
客户端日志中的 "总大小"
- 1 秒 = 32000 bytes ❌ 太短
- 3 秒 = 96000 bytes ✅ 合适
- 5 秒 = 160000 bytes ✅ 更好
```
**解决**
- 说话时间延长到 3-5 秒
- 清晰发音,不要含糊
- 避免背景噪音
### 问题4ASR 无法识别
**可能原因**
- 音频质量差(噪音大)
- 说话不清晰
- 音频格式不对
**解决**
- 在安静环境测试
- 清晰发音
- 确认录音格式为 PCM 16kHz 单声道
## 📞 需要帮助?
如果测试失败,请提供:
1. **客户端日志**(完整的,从按下按钮到收到响应)
2. **服务器日志**(查看 `tail -f logs/app.log`
3. **录音信息**
- 总大小bytes
- 时长(秒)
- 片数
4. **错误信息**(如果有)
## 🎉 测试成功标志
当你看到以下情况,说明测试成功:
1. ✅ 按住按钮,说话 3-5 秒
2. ✅ 松开按钮,看到"发送中..."
3. ✅ 看到"识别中..."
4. ✅ 收到文字回复(例如:"你好呀,今天天气不错~"
5. ✅ 听到语音回复AI 的声音)
6. ✅ 整个过程在 20 秒内完成
7. ✅ 没有任何错误提示
恭喜!语音通话功能已正常工作!🎊