Ai_GirlFriend/xuniYou/App端实时录音配置说明.md
2026-02-28 18:04:34 +08:00

101 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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. 如果没有,会自动使用备用方案(文件发送)