如何在Android上使用OpenSL测量音频延迟?

Tar*_*ras 4 android opensl android-audiorecord

我使用OpenSL在Android上录制和播放音频.您能否告诉我如何测量延迟,以便找到最佳音频配置(缓冲区,采样率).

先感谢您!

Mic*_*ael 9

以下是我用来测量音频输出延迟的方法:

  • 使用一个或多个按钮为您的应用创建一个简单的UI,按下这些按钮时会播放声音.我建议使用近瞬时攻击的声音(即非常快速达到全振幅的声音).
  • 在Android设备上调高音量并将其靠近其他设备的麦克风(例如您的PC或其他手机).
  • 使用您的应用程序通过点击按钮播放一些声音.轻敲它们以使水龙头本身清晰可听.
  • 在第二台设备上记录所有这些.
  • 完成后,在声音编辑器(例如Audacity)中打开录音并测量敲击声音和结果播放之间的距离(即时间).您可能想要取几个这样的距离的平均值或中值.

这种测量方式具有易于执行的优点.缺点是您的结果也包括触摸延迟.触摸事件以60 Hz的频率生成,这意味着除了音频输出延迟之外,您还可以获得大约16 ms的额外延迟.这使得使用此方法测量非常小的延迟差异几乎是不可能的.


更新:在Google的Glenn Kasten的留言板帖子中,他链接到几页,描述了更准确的音频延迟测量方法.我想我可以在这里添加它们以供参考.是描述测量往返延迟的页面,这是另一个描述仅测量输出延迟的页面.