You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何同一WAV文件使用不同Python库获取的采样率不一致?

为什么librosa获取的WAV采样率和wave、scipy不一样?

这是个非常常见的问题,核心原因在于librosa.load的默认行为和另外两个库存在本质区别:

1. wave和scipy.io.wavfile的行为

wave和scipy.io.wavfile.read都是直接读取WAV文件的原始元数据,不会对音频数据做任何修改。它们返回的采样率就是文件本身录制/保存时的原始采样率(也就是你这里的16000Hz),完全忠实于源文件。

2. librosa.load的默认逻辑

librosa作为专门用于音频分析的库,默认会对加载的音频做重采样处理——它的load函数有一个默认参数sr=22050,意思是不管源文件的采样率是多少,都会自动把音频重采样到22050Hz(这是librosa设定的“标准采样率”)。所以你得到的sample_rate=22050其实是重采样后的结果,不是源文件的原始采样率。

3. 如何让librosa返回原始采样率?

有两种简单的方法可以获取源文件的真实采样率:

  • 调用librosa.load时显式指定sr=None,这样它就会跳过重采样步骤,返回原始采样率:
    import librosa
    X, sample_rate = librosa.load(fname, sr=None)
    # 此时sample_rate会等于16000,和另外两个库结果一致
    
  • 如果只是想获取采样率而不需要加载音频数据,可以用更高效的librosa.get_samplerate函数:
    import librosa
    original_sr = librosa.get_samplerate(fname)
    # original_sr直接返回16000,无需加载整个音频
    

简单总结:wave和scipy是“原样读取”,librosa默认是“标准化读取”,调整sr参数就能让三者的结果统一啦。

内容的提问来源于stack exchange,提问作者Boom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:45:00