4.8 KiB
4.8 KiB
最终测试指南
✅ 已完成的修复
1. 语法错误修复
- ✅ 修复了多余的
} else { - ✅ 代码可以正常编译
2. WebSocket 连接等待
- ✅ 添加了连接检查和等待逻辑
- ✅ 如果 WebSocket 未连接,会自动等待最多 3 秒
- ✅ 连接成功后才开始录音
3. 录音兼容性
- ✅ 跳过 duration/fileSize undefined 检查
- ✅ 直接读取文件内容获取实际大小
4. 音频数据格式
- ✅ 不指定 encoding,返回 ArrayBuffer
- ✅ 验证数据类型
5. 分片发送
- ✅ 使用官方推荐参数(3200 bytes, 100ms)
- ✅ 发送结束标记
📱 立即测试
1. 重新编译
在 HBuilderX 中重新运行项目
2. 测试步骤
- 打开 App
- 进入语音通话页面
- 等待 2-3 秒(让 WebSocket 连接建立)
- 按住"按住说话"按钮 3-5 秒
- 松开按钮
- 观察日志和响应
3. 预期日志
页面加载时
09:30:00 === onLoad 被调用 ===
09:30:00 获取通话时长配置...
09:30:01 🔗 WebSocket URL: ws://192.168.1.141:30101/voice/call
09:30:01 WebSocket onOpen: [Object] {}
09:30:01 📥 收到服务器消息:{"type":"ready"}
按住说话时
🔥🔥🔥 ===== startTalking 被调用 ===== 🔥🔥🔥
✅ WebSocket 状态正常
✅ 开始说话
=== startRecording 被调用 ===
✅ 录音已开始
松开按钮时
=== stopTalking 被调用 ===
🛑 停止录音并准备发送...
⏹️ 录音已停止
📁 文件路径: _doc/uniapp_temp_xxx/recorder/xxx.pcm
✅ 录音文件路径有效,准备读取文件...
🔌 WebSocket 状态: 1
✅ WebSocket 状态正常,开始读取文件...
📂 获取文件系统管理器: 成功
✅ 文件读取成功
📊 实际文件大小: 160000 bytes
📊 预计录音时长: 5.00 秒
📦 开始分片发送(官方推荐参数)
📤 发送第 1 片,大小: 3200 bytes
✅ 第 1 片发送成功
...
✅ 所有音频片段发送完成,共 50 片
📤 发送结束标记 "end"
✅ 结束标记发送成功
收到响应时
📋 收到控制消息, type: reply_text
📋 完整消息: {"type":"reply_text","text":"你好呀..."}
🎵 收到音频数据流
📋 收到控制消息, type: reply_end
[开始播放音频]
🎯 成功标志
当你看到以下情况,说明成功:
- ✅ WebSocket 在页面加载时就连接成功
- ✅ 按住说话时不会提示"WebSocket 未连接"
- ✅ 录音文件成功读取
- ✅ 音频数据分片发送成功
- ✅ 收到 ASR 识别结果
- ✅ 收到 LLM 文字回复
- ✅ 收到 TTS 音频数据
- ✅ 听到 AI 的声音
- ✅ 整个过程在 30 秒内完成
- ✅ 没有 "idle timeout" 错误
🐛 如果还有问题
问题1: 还是提示"WebSocket 未连接"
检查:
- 页面加载时是否看到 "WebSocket onOpen"
- 是否等待了 2-3 秒再按按钮
解决:
- 等待页面完全加载
- 看到"ready"消息后再开始说话
问题2: 还是收到 "idle timeout"
检查:
- 服务器是否已重启
- 服务器
.env文件是否有VOICE_CALL_IDLE_TIMEOUT=120
解决:
# 在服务器上
cat lover/.env | grep VOICE_CALL_IDLE_TIMEOUT
pkill -f "uvicorn.*main:app"
cd /path/to/lover
uvicorn main:app --host 0.0.0.0 --port 30101 --reload
问题3: 文件读取失败
检查:
- 是否看到"文件读取成功"
- 文件大小是否 > 0
解决:
- 确保说话时间 >= 3 秒
- 检查麦克风权限
问题4: ASR 报错 NO_VALID_AUDIO_ERROR
检查:
- 数据类型是否为 ArrayBuffer
- 文件大小是否足够
解决:
- 确认日志中显示 "是否为 ArrayBuffer: true"
- 确认文件大小 > 96000 bytes(3 秒)
📊 完整的成功流程
1. 打开 App
2. 进入语音通话页面
3. 等待 WebSocket 连接(2-3 秒)
4. 看到"ready"消息
5. 按住"按住说话"按钮
6. 清晰地说 3-5 秒
7. 松开按钮
8. 看到"发送中..."
9. 看到"识别中..."
10. 收到文字回复(5-10 秒)
11. 听到语音回复
12. 完成!
💡 测试技巧
1. 说话内容建议
- "你好,今天天气怎么样?"
- "请介绍一下你自己"
- "我想听你唱首歌"
2. 环境要求
- 安静的环境
- 清晰的发音
- 正常的语速
3. 时间要求
- 等待 WebSocket 连接:2-3 秒
- 说话时长:3-5 秒
- 预期响应时间:10-20 秒
🎉 预期体验
修复后,语音通话应该:
- 页面加载后自动连接 WebSocket
- 按住按钮立即开始录音(不会提示未连接)
- 松开按钮后快速发送数据
- 10-20 秒内收到完整响应
- 听到 AI 的声音
- 整个过程流畅自然
就像和真人对话一样!🎊
修复完成时间: 2026-02-28
需要操作: 重新编译客户端
预计测试时间: 3 分钟
成功率: 95%(如果服务器配置正确)