如何获得准确的音频时基

时间:2017-02-13 10:06:46

标签: python audio pydub

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

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

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

感谢。

1 个答案:

答案 0 :(得分:0)

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