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

2.4 KiB
Raw Permalink Blame History

App 端实时录音配置说明

让 recorderManager.onFrameRecorded 在 App 端工作的关键配置

必须满足的条件:

  1. format 必须是 'pcm'

    format: 'pcm'  // 不能是 mp3 或 aac
    
  2. 必须设置 frameSize

    frameSize: 5  // 单位 KB建议 1-10
    
  3. sampleRate 必须是标准值

    sampleRate: 16000  // 只能是 8000/16000/44100
    
  4. 完整配置示例

    recorderManager.start({
        duration: 600000,        // 最长录音时间
        sampleRate: 16000,       // 采样率
        numberOfChannels: 1,     // 单声道
        encodeBitRate: 48000,    // 编码比特率
        format: 'pcm',           // 关键:必须 pcm
        frameSize: 5,            // 关键:必须设置
        audioSource: 'auto'      // 音频源
    })
    

工作原理

实时流式传输模式(推荐)

  • 按住按钮 → 开始录音
  • 录音持续进行,实时产生音频帧
  • 按住时:发送音频帧到服务器
  • 松开时:停止发送(但录音继续)
  • 再次按住:继续发送

优点

  • 低延迟,实时传输
  • 服务器可以实时处理
  • 用户体验好

缺点

  • 需要 PCM 格式(文件较大)
  • 需要服务器支持流式处理

备用方案

如果 onFrameRecorded 仍然不工作,会自动降级到 onStop 方案:

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