如何获得准确的音频时基

How to get an accurate audio time-base

我对使用音频文件作为及时发生的事件的记录很感兴趣。那就是我将有多个数据流需要及时对齐,我想使用音频文件作为参考。所以,我想知道是否有可能获得音频流的实际时基,作为相对于实时时钟的参考?
我很欣赏可以根据样本计数和采样频率(比如 16KHz)确定音频剪辑的持续时间。对于短片,这可能是一个很好的估计,但对于长时间(多小时的录音),这个估计的准确度如何?我想在多个小时内保持亚秒级精度。

换句话说,音频文件是否存储录音的实际开始和停止时间,以 RTC(实时时钟)为参考。这将允许为音频文件中的每个样本生成时基。如果是这样,我可以从 python 音频库中获取这些数据吗?

我正在使用 MP4/AAC 在 Android 平台上进行编码,并使用 pydub 进行 post 处理。

谢谢。

我们想出了一个看似笨拙的答案,但老实说对我们来说效果很好。似乎音频格式规范不允许存储会话开始和结束的时间码。因此,相反,我们将开始时间戳编码为毫秒级分辨率,记录按钮被按下的那一刻,作为文件名中的字符串 ("2017-02-13_10-04-27-943") 并记录音频会话。然后当录制停止时,我们抓取另一个时间戳,以毫秒为单位计算时间差,然后在文件名中附加持续时间作为字符串,就在关闭文件后 ("Dur123456")。因此,时间开始和持续时间参考 Android phone 上的 RTC(实时时钟)。然后我们能够将 WAV/PCM 时基重新映射到真实持续时间。事实证明,“16KHz”实际上并不是 16,000Hz。对于 10 分钟的录音,我们发现了大约几秒的错误。它可能看起来并不多,但对于多小时的录音来说,它会加起来。谢谢。