Ai_GirlFriend/xuniYou/按住说话调试指南.md
2026-02-28 09:40:18 +08:00

4.1 KiB
Raw Permalink Blame History

按住说话功能调试指南

问题现象

按住说话按钮后,日志显示"开始说话"和"停止说话",但没有音频数据发送。

已添加的调试日志

1. 按住按钮时

startTalking 被调用, micEnabled: true, isRecording: false
开始说话, isTalking 设置为: true
录音未启动,开始启动录音

2. 录音启动时

=== startRecording 被调用 ===
isRecording: false
isApp: true/false
socketTask 状态: 1 (1表示已连接)

3. App 端原生录音

=== startRecord (App原生) 被调用 ===
请求录音权限
权限请求结果: {...}
录音权限已授予
开始启动原生录音器
原生录音器已启动
收到原生音频帧, isTalking: true, buffer size: xxx
✅ 发送原生音频数据到服务器

4. 小程序/H5 端录音

小程序/H5 端:设置录音监听器
启动 recorderManager
recorderManager.start 已调用
✅ 录音已开始
收到音频帧, isTalking: true, frameBuffer size: xxx
✅ 发送音频数据到服务器
音频数据发送成功

检查清单

1. WebSocket 连接状态

查看日志中的 socketTask 状态

  • 0 = CONNECTING (连接中)
  • 1 = OPEN (已连接)
  • 2 = CLOSING (关闭中)
  • 3 = CLOSED (已关闭)

如果不是 1,说明 WebSocket 未连接成功。

2. 录音权限

App 端查看:

权限请求结果: { granted: [...], deniedAlways: [], deniedPresent: [] }
  • granted 数组应该包含 android.permission.RECORD_AUDIO
  • 如果在 deniedAlwaysdeniedPresent 中,需要手动授权

3. 录音是否真正启动

查看是否有:

  • App 端:原生录音器已启动
  • 小程序端:✅ 录音已开始

如果没有,可能是:

  • 权限被拒绝
  • recorderManager 初始化失败
  • 录音参数不支持

4. 音频帧是否产生

查看是否有:

  • 收到音频帧收到原生音频帧

如果没有,说明录音器没有产生音频数据。

5. isTalking 状态

查看日志中的 isTalking 值:

  • 按住时应该是 true
  • 松开时应该是 false

如果一直是 false,说明状态没有正确更新。

常见问题及解决方案

问题1录音权限被拒绝

现象:日志显示 录音权限被拒绝

解决

  1. 进入手机设置 → 应用管理 → 找到你的应用
  2. 权限管理 → 麦克风 → 允许

问题2recorderManager 未初始化

现象:日志显示 recorderManager 未初始化

解决

  1. 确认 manifest.json 中 Record 模块已启用
  2. 重新编译项目
  3. 检查是否在 App 端App 端不使用 recorderManager

问题3WebSocket 未连接

现象socketTask 状态: null 或不是 1

解决

  1. 检查后端服务是否启动
  2. 检查 WebSocket URL 是否正确
  3. 检查 token 是否有效

问题4音频帧不发送

现象:有 收到音频帧 但没有 发送音频数据

解决

  1. 检查 isTalking 是否为 true
  2. 检查 socketTask.readyState 是否为 1
  3. 确认按住按钮时没有松开

问题5录音格式不支持

现象:录音启动失败或报错

解决 尝试修改录音参数:

recorderManager.start({
    format: 'mp3', // 改为 mp3 试试
    sampleRate: 16000,
    numberOfChannels: 1,
    frameSize: 1 // 改小一点
});

测试步骤

  1. 清空控制台

  2. 进入语音通话页面

    • 查看 WebSocket 是否连接成功
    • 查看是否有 WebSocket onOpen 日志
  3. 按住"按住说话"按钮

    • 应该看到 startTalking 被调用
    • 应该看到 isTalking 设置为: true
    • 应该看到 === startRecording 被调用 ===
    • 应该看到录音启动成功的日志
  4. 保持按住 2-3 秒

    • 应该看到多个 收到音频帧 日志
    • 应该看到多个 ✅ 发送音频数据到服务器 日志
  5. 松开按钮

    • 应该看到 停止说话, isTalking 设置为: false
    • 之后的音频帧应该显示 ⏸️ 不发送音频数据

下一步

如果按照上述步骤仍然无法工作,请:

  1. 截图完整的控制台日志
  2. 说明是在什么平台测试App/小程序/H5
  3. 说明具体卡在哪一步