librosa 和 tensorflow 之间相同 wav 文件的不同采样率 SR

Different sample rate SR for same wav file between librosa and tensorflow

我有一个 wav 文件,我用 Audacity 将其重新采样到 16.000 kHz。 现在我正在尝试使用 python 以 2 种不同的方式加载文件。

import tensorflow as tf
import librosa

f = "path/to/wav/file/xxxx.wav"

raw = tf.io.read_file(f)
audio, sr = tf.audio.decode_wav(raw, desired_channels=1)
print("Sample Rate TF: ",sr.numpy())

y, sr2 = librosa.load(f)
print("Sample Rate librosa: ",sr2)


#Sample Rate TF:  16000
#Sample Ratelibrosa:  22050

为什么同一个文件的采样率如此不同? 我更信任哪个图书馆?

这不是“信任”的问题。这两个功能都在做它们应该做的事情。 TF 版本显然不会对音频进行重新采样。默认情况下,Librosa 会重新采样到 22,050 Hz(无论出于何种原因)。请read the docs。您可以通过调用

来避免这种情况
y, sr2 = librosa.load(f, sr=None)

一般来说,sr参数提供了重采样的采样率;通过传递 None,您可以防止重新采样。