为何librosa与tensorflow加载同一份wav文件得到的采样率不同
采样率差异原因
这个差异是两个库的默认加载逻辑不同导致的,和原文件本身无关:
tf.audio.decode_wav()读取音频时不会默认执行重采样操作,会直接解析WAV文件头中存储的原始采样参数返回,你通过Audacity重采样后文件的原生采样率就是16000Hz,所以返回结果和实际情况一致。librosa.load()有默认重采样逻辑,函数的sr参数默认值为22050,只要你不主动修改这个参数,无论原文件采样率是多少,librosa都会自动把音频重采样到22050Hz后再返回,你打印的sr2是重采样后的目标采样率,不是原文件的真实采样率。
结果可信度说明
两个库的返回结果都符合自身的设计逻辑,没有对错之分,按需选择即可:
- 如果要获取WAV文件的原生采样率,优先参考TensorFlow的返回结果,也可以修改librosa的调用代码为
y, sr2 = librosa.load(f, sr=None),手动指定sr=None后librosa就会跳过自动重采样步骤,直接返回原文件的采样率与原始音频数据。 - 如果你后续的音频处理流程本身要求统一使用22050Hz的采样率,librosa的默认返回结果也完全准确,可以直接使用。
内容的提问来源于stack exchange,提问作者Tobi Lawful
相关产品推荐
相关产品推荐

