# ASR 语音识别测试指南 ## 🎯 当前状态 ### ✅ 已完成的修复 1. **前端修复**: - 修复了 `onStop` 回调中的文件处理逻辑 - 添加了 `sendAudioToASR` 方法通过 HTTP POST 发送音频 - 移除了冲突的 WebSocket 备用方案 - 改用 WAV 格式录音(兼容性最好) 2. **后端修复**: - 添加了新的 `/voice/call/asr` 端点处理 JSON 格式音频 - 修复了环境变量加载问题 - 改进了错误处理 - 后端运行在端口 30102 3. **配置更新**: - 前端 `baseURLPy` 更新为 `http://192.168.1.141:30102` - 录音格式改为 WAV(16kHz, 单声道) ## 📱 测试步骤 ### 1. 确保后端运行 ```bash cd lover python main_simple.py ``` 应该看到: ``` INFO: Uvicorn running on http://0.0.0.0:30102 ``` ### 2. 测试后端 ASR 端点 ```bash python test_asr_fix.py ``` 应该看到: ``` ✅ ASR 请求成功 🎉 ASR 修复测试成功! ``` ### 3. 在前端测试录音 1. 打开 uni-app 应用 2. 进入语音通话页面 3. 按住"按住说话"按钮 4. 说话 2-3 秒 5. 松开按钮 ### 4. 查看日志 **前端控制台应该显示**: ``` 📁 开始处理录音文件 ✅ 文件读取成功,开始发送到ASR 📤 发送ASR请求... ✅ ASR响应: ... ``` **后端日志应该显示**: ``` INFO - 收到 JSON ASR 请求,格式: wav INFO - 解码音频数据成功,大小: XXX 字节 INFO - 上传 WAV 文件到 OSS... INFO - 调用 DashScope ASR... INFO - ASR 任务已创建: ... INFO - ASR 识别成功 ``` ## 🔍 常见问题排查 ### 问题 1:音频格式解码失败 **症状**: ``` 音频格式解码失败,请检查录音设置 ``` **解决方案**: - 确认前端使用 WAV 格式录音 - 检查录音参数:16kHz, 单声道 - 查看后端日志确认音频数据大小 ### 问题 2:未识别到语音内容 **症状**: ``` 音频中未检测到有效语音 ``` **原因**: - 录音时间太短(< 1秒) - 环境噪音太大 - 说话声音太小 **解决方案**: - 录音时间保持在 2-5 秒 - 在安静环境测试 - 靠近麦克风说话 ### 问题 3:WebSocket 连接问题 **症状**: ``` Expected URL scheme 'http' or 'https' but was 'file' ``` **原因**: - 旧的 WebSocket 流程仍在运行 - 前端代码没有更新 **解决方案**: - 确认前端已移除 WebSocket 备用方案 - 重新编译前端应用 - 清除应用缓存 ### 问题 4:后端连接失败 **症状**: ``` 由于目标计算机积极拒绝,无法连接 ``` **解决方案**: - 确认后端正在运行:`netstat -an | findstr :30102` - 检查防火墙设置 - 确认前端配置的端口正确(30102) ## 📝 预期结果 ### 成功的录音识别流程 1. **用户操作**: - 按住说话按钮 - 说话 2-3 秒:"你好,今天天气怎么样" - 松开按钮 2. **前端处理**: - 录音停止 - 读取 WAV 文件 - 转换为 base64 - 发送到 `/voice/call/asr` 3. **后端处理**: - 接收 base64 音频数据 - 解码为二进制 - 上传到 OSS - 调用 DashScope ASR - 返回识别结果 4. **用户看到**: - Toast 提示:"识别: 你好,今天天气怎么样" ## 🚀 下一步优化 1. **添加语音对话功能**: - 将识别结果发送给 LLM - 生成回复 - 使用 TTS 播放回复 2. **优化用户体验**: - 添加录音动画 - 显示识别进度 - 支持重新录音 3. **错误处理**: - 网络错误重试 - 超时处理 - 友好的错误提示 ## 📞 技术支持 如果遇到问题,请提供: 1. 前端控制台完整日志 2. 后端服务器日志 3. 录音文件大小和时长 4. 网络环境信息 --- **最后更新**: 2026-03-04 **版本**: v1.0