0

我的应用正在使用 RemoteIO 录制音频。它不进行任何播放。RemoteIO 似乎与 iOS14 中的新声音识别功能广泛兼容,但我在首次启用声音识别时看到了一个小故障。

如果我的应用程序已启动并初始化 RemoteIO,然后打开声音识别(例如通过控制中心),则此后不会调用 RemoteIO 输入回调,直到我拆除音频单元并将其重新设置。所以类似于以下内容:

  • 启动应用程序
  • RemoteIO已初始化并正在工作,可以记录
  • 通过设置或控制中心小部件打开声音识别
  • 使用已设置的 RemoteIO 开始录制
  • 录音回调不再被调用
  • 虽然没有看到输入回调,但 kAudioOutputUnitProperty_IsRunning 报告为 true,因此音频单元认为它处于活动状态
  • 拆下音频单元
  • 重新设置音频单元
  • 录音作品
  • 缓冲区大小已更改,反映了对声音识别功能的音频会话的一些影响

我还注意到,当启用声音识别时,我看到几个(通常是 3 个)AVAudioSession.routeChangeNotifications 快速连续。在设置 RemoteIO 时禁用声音识别时,我看不到此问题。我正在分配我自己的缓冲区,所以它们的大小不是问题。

这里会发生什么?我没有正确处理路线变更吗?我似乎没有可靠的事件序列来了解何时重置音频单元。


我在这里找到的唯一解决方法是破解一个计时器,该计时器在开始录制后不久检查回调活动,如果没有看到回调活动,则重置音频单元。总比没有好,但不是超级可靠。

4

0 回答 0