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