我正在运行一个测试来测量我的 iPhone 应用程序的基本延迟,结果令人失望:50 毫秒的播放测试应用程序。该应用程序只是拾取麦克风输入并使用相同的渲染回调将其播放出来,不涉及其他音频单元或处理。因此,对于这样的基本情况,结果似乎太糟糕了。我需要一些指示来查看结果是否有意义,或者我的测试中是否存在设计缺陷。
测试的基本思想是具有三个角色:
- 我的手指弹响作为参考声源。
- 一个简单的 iOS play-thru 应用程序(使用内置麦克风)作为 #1 的第一个监听器。
- Mac(带有 USB 麦克风和 Audacity)作为 #1 的第二个监听器和 iOS 输出的唯一监听器(通过通过 iOS 耳机插孔连接的扬声器)。
然后,当 Audacity 处于录音模式时,Mac 会从我的手指中拾取声音,并从近距离的 iOS 扬声器中拾取它的“克隆”。最后,我只是直观地观察了 Audacity 录制轨道中的波形,并测量了两个录制快照的峰值之间的时间间隔。
这绝不是一个超级准确的测量,但至少 Mac 录制管道的固有延迟应该以这种方式被抵消。所以误差应该主要来自峰值距离测量,我假设它应该比音频管道延迟小得多,可以忽略不计。
我期待 20 毫秒或更低的延迟,但显然结果给了我 50~60 毫秒。我的 ASBD 使用 kAudioFormatFlagsCanonical 和 kAudioFormatLinearPCM 作为格式。