Ai_GirlFriend/xuniYou/App端实时录音配置说明.md

101 lines
2.4 KiB
Markdown
Raw Permalink Normal View History

2026-02-28 18:04:34 +08:00
# App 端实时录音配置说明
## 让 recorderManager.onFrameRecorded 在 App 端工作的关键配置
### 必须满足的条件:
1. **format 必须是 'pcm'**
```javascript
format: 'pcm' // 不能是 mp3 或 aac
```
2. **必须设置 frameSize**
```javascript
frameSize: 5 // 单位 KB建议 1-10
```
3. **sampleRate 必须是标准值**
```javascript
sampleRate: 16000 // 只能是 8000/16000/44100
```
4. **完整配置示例**
```javascript
recorderManager.start({
duration: 600000, // 最长录音时间
sampleRate: 16000, // 采样率
numberOfChannels: 1, // 单声道
encodeBitRate: 48000, // 编码比特率
format: 'pcm', // 关键:必须 pcm
frameSize: 5, // 关键:必须设置
audioSource: 'auto' // 音频源
})
```
## 工作原理
### 实时流式传输模式(推荐)
- 按住按钮 → 开始录音
- 录音持续进行,实时产生音频帧
- 按住时:发送音频帧到服务器
- 松开时:停止发送(但录音继续)
- 再次按住:继续发送
### 优点
- 低延迟,实时传输
- 服务器可以实时处理
- 用户体验好
### 缺点
- 需要 PCM 格式(文件较大)
- 需要服务器支持流式处理
## 备用方案
如果 `onFrameRecorded` 仍然不工作,会自动降级到 `onStop` 方案:
```javascript
recorderManager.onStop((res) => {
// 读取完整录音文件
// 一次性发送到服务器
})
```
## 调试技巧
1. **查看日志**
- `✅ 录音已开始` - 录音启动成功
- `🎤 收到音频帧 #1` - 实时帧工作
- `⏹️ 录音已停止` - 降级到备用方案
2. **如果没有音频帧**
- 检查 format 是否为 'pcm'
- 检查 frameSize 是否设置
- 检查 manifest.json 中 Record 模块是否启用
3. **性能优化**
- frameSize 越小,延迟越低,但回调频率越高
- 建议值3-5 KB
## 服务器端要求
服务器需要支持:
1. WebSocket 连接
2. 接收 PCM 格式音频流
3. 实时语音识别(如果需要)
4. 返回音频响应
## 当前状态
✅ 录音功能已实现
✅ 文件发送已成功
⚠️ 需要测试实时帧是否工作
⚠️ 需要检查服务器端处理
## 下一步
1. 重新编译并测试
2. 查看是否有 `🎤 收到音频帧` 日志
3. 如果有,说明实时流式传输工作
4. 如果没有,会自动使用备用方案(文件发送)