195 lines
4.4 KiB
Markdown
195 lines
4.4 KiB
Markdown
|
|
# 🚀 立即测试指南
|
|||
|
|
|
|||
|
|
## ✅ 已修复的问题
|
|||
|
|
|
|||
|
|
### 问题:NO_VALID_AUDIO_ERROR
|
|||
|
|
- **原因**: 使用 `encoding: 'binary'` 导致发送字符串而不是二进制数据
|
|||
|
|
- **修复**: 移除 encoding 参数,让 readFile 返回 ArrayBuffer
|
|||
|
|
- **状态**: ✅ 已修复
|
|||
|
|
|
|||
|
|
## 📱 立即测试
|
|||
|
|
|
|||
|
|
### 1️⃣ 重新编译客户端(必须!)
|
|||
|
|
|
|||
|
|
在 HBuilderX 中:
|
|||
|
|
1. 停止当前运行
|
|||
|
|
2. 重新运行到手机/模拟器
|
|||
|
|
|
|||
|
|
### 2️⃣ 测试步骤
|
|||
|
|
|
|||
|
|
1. 打开 App
|
|||
|
|
2. 进入语音通话页面
|
|||
|
|
3. 按住"按住说话"
|
|||
|
|
4. **清晰地说 3-5 秒**
|
|||
|
|
5. 松开按钮
|
|||
|
|
6. 等待响应
|
|||
|
|
|
|||
|
|
### 3️⃣ 预期结果
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
✅ 发送中...
|
|||
|
|
✅ 识别中...
|
|||
|
|
✅ 收到文字回复
|
|||
|
|
✅ 听到语音回复
|
|||
|
|
✅ 总耗时 < 30 秒
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🔍 关键日志检查
|
|||
|
|
|
|||
|
|
### 客户端必须看到
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
✅ 文件读取成功
|
|||
|
|
📊 数据类型: object
|
|||
|
|
📊 是否为 ArrayBuffer: true ← 这个很重要!
|
|||
|
|
📊 数据大小: [> 96000] bytes
|
|||
|
|
📦 开始分片发送(官方推荐参数)
|
|||
|
|
📊 预计录音时长: [> 3.00] 秒 ← 确保至少 3 秒
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 服务器不应该再看到
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
❌ ASR error: NO_VALID_AUDIO_ERROR ← 这个错误应该消失了
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 服务器应该看到
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
✅ ASR connection opened
|
|||
|
|
✅ ASR event end=True sentence=[你说的话]
|
|||
|
|
✅ Handle sentence: [你说的话]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🎯 成功标志
|
|||
|
|
|
|||
|
|
当你看到以下情况,说明修复成功:
|
|||
|
|
|
|||
|
|
1. ✅ 客户端日志显示 "是否为 ArrayBuffer: true"
|
|||
|
|
2. ✅ 服务器不再报 NO_VALID_AUDIO_ERROR
|
|||
|
|
3. ✅ 服务器日志显示 ASR 识别成功
|
|||
|
|
4. ✅ 收到 LLM 的文字回复
|
|||
|
|
5. ✅ 听到 TTS 的语音回复
|
|||
|
|
|
|||
|
|
## 🐛 如果还有问题
|
|||
|
|
|
|||
|
|
### 问题1:还是 NO_VALID_AUDIO_ERROR
|
|||
|
|
|
|||
|
|
**检查**:
|
|||
|
|
```
|
|||
|
|
客户端日志中的:
|
|||
|
|
📊 是否为 ArrayBuffer: true ← 必须是 true
|
|||
|
|
|
|||
|
|
如果是 false,说明代码没有更新,需要重新编译
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 问题2:idle timeout
|
|||
|
|
|
|||
|
|
**检查**:
|
|||
|
|
```bash
|
|||
|
|
# 确认服务器配置
|
|||
|
|
cat lover/.env | grep VOICE_CALL_IDLE_TIMEOUT
|
|||
|
|
|
|||
|
|
# 应该显示:
|
|||
|
|
VOICE_CALL_IDLE_TIMEOUT=120
|
|||
|
|
|
|||
|
|
# 如果没有,说明服务器没有重启或配置没有生效
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 问题3:录音太短
|
|||
|
|
|
|||
|
|
**检查**:
|
|||
|
|
```
|
|||
|
|
客户端日志中的:
|
|||
|
|
📊 预计录音时长: 5.00 秒 ← 应该 >= 3 秒
|
|||
|
|
|
|||
|
|
如果 < 3 秒,说明说话时间太短
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 📊 完整的成功日志示例
|
|||
|
|
|
|||
|
|
### 客户端日志
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
=== startRecording 被调用 ===
|
|||
|
|
✅ recorderManager.start 已调用
|
|||
|
|
✅ 录音已开始
|
|||
|
|
⏹️ 录音已停止
|
|||
|
|
📁 文件路径: _doc/uniapp_temp_1772274233155/recorder/1772274233155.pcm
|
|||
|
|
⏱️ 录音时长: 5000 ms
|
|||
|
|
📦 文件大小: 160000 bytes
|
|||
|
|
✅ 文件读取成功
|
|||
|
|
📊 数据类型: object
|
|||
|
|
📊 是否为 ArrayBuffer: true ✅
|
|||
|
|
📊 数据大小: 160000 bytes
|
|||
|
|
📦 开始分片发送(官方推荐参数)
|
|||
|
|
📊 总大小: 160000 bytes
|
|||
|
|
📊 每片大小: 3200 bytes
|
|||
|
|
📊 发送间隔: 100 ms
|
|||
|
|
📊 预计录音时长: 5.00 秒 ✅
|
|||
|
|
📤 发送第 1 片,大小: 3200 bytes
|
|||
|
|
✅ 第 1 片发送成功
|
|||
|
|
...
|
|||
|
|
✅ 所有音频片段发送完成,共 50 片
|
|||
|
|
📤 发送结束标记 "end"
|
|||
|
|
✅ 结束标记发送成功,等待服务器处理...
|
|||
|
|
📋 收到控制消息, type: reply_text
|
|||
|
|
📋 完整消息: {"type":"reply_text","text":"你好呀..."}
|
|||
|
|
🎵 收到音频数据流
|
|||
|
|
📋 收到控制消息, type: reply_end
|
|||
|
|
[开始播放音频]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 服务器日志
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
2026-02-28 18:30:00.000 - voice_call - INFO - ASR connection opened
|
|||
|
|
2026-02-28 18:30:05.000 - voice_call - INFO - ASR event end=False sentence=你好
|
|||
|
|
2026-02-28 18:30:06.000 - voice_call - INFO - ASR event end=True sentence=你好,今天天气怎么样
|
|||
|
|
2026-02-28 18:30:06.100 - voice_call - INFO - Handle sentence: 你好,今天天气怎么样
|
|||
|
|
[LLM 生成日志]
|
|||
|
|
[TTS 合成日志]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 💡 测试技巧
|
|||
|
|
|
|||
|
|
### 1. 说话内容建议
|
|||
|
|
|
|||
|
|
- "你好,今天天气怎么样?"(简单问候)
|
|||
|
|
- "请介绍一下你自己"(让 AI 多说一点)
|
|||
|
|
- "我想听你唱首歌"(测试长回复)
|
|||
|
|
|
|||
|
|
### 2. 环境要求
|
|||
|
|
|
|||
|
|
- 安静的环境
|
|||
|
|
- 清晰的发音
|
|||
|
|
- 正常的语速
|
|||
|
|
- 手机靠近嘴巴
|
|||
|
|
|
|||
|
|
### 3. 时间要求
|
|||
|
|
|
|||
|
|
- 说话时长:3-5 秒
|
|||
|
|
- 不要太短(< 2 秒)
|
|||
|
|
- 不要太长(> 10 秒)
|
|||
|
|
|
|||
|
|
## 🎉 预期体验
|
|||
|
|
|
|||
|
|
修复后,语音通话应该:
|
|||
|
|
|
|||
|
|
1. 按住按钮,说话 3-5 秒
|
|||
|
|
2. 松开按钮,看到"发送中..."
|
|||
|
|
3. 2-3 秒后看到"识别中..."
|
|||
|
|
4. 5-10 秒后收到文字回复
|
|||
|
|
5. 同时开始播放语音
|
|||
|
|
6. 整个过程流畅自然
|
|||
|
|
7. 没有任何错误提示
|
|||
|
|
|
|||
|
|
就像和真人对话一样!🎊
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**修复完成时间**: 2026-02-28
|
|||
|
|
**需要操作**: 重新编译客户端
|
|||
|
|
**预计测试时间**: 2 分钟
|
|||
|
|
**成功率**: 99%(如果按照指南操作)
|