190 lines
3.7 KiB
Markdown
190 lines
3.7 KiB
Markdown
# 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
|