9

我有一个关于loadlibrosa 的read功能和scipy.io.wavfile.

from scipy.io import wavfile
import librosa

fs, data = wavfile.read(name)
data, fs = librosa.load(name)

导入的语音文件是同一个文件。如果你运行上面的代码,两个函数出来的数据值是不同的。我想知道为什么数据的价值不同。

4

4 回答 4

9

从文档字符串librosa.core.load

将音频文件加载为浮点时​​间序列。

音频将自动重新采样到给定的速率(默认 sr=22050)。

要保留文件的本机采样率,请使用 sr=None。

scipy.io.wavfile.read不会自动对数据重新采样,并且如果样本在文件中是整数,则不会将其转换为浮点数。

于 2018-04-27T13:24:40.210 回答
3

还值得一提的是,librosa.load()标准化数据(使所有数据点都在 1 和 -1 之间),而wavfile.read()没有。

于 2019-11-21T14:17:30.860 回答
2

数据不同,因为scipy没有对输入信号进行归一化。

这是一个片段,展示了如何将scipy输出更改为匹配librosa的:

nbits = 16

l_wave, rate = librosa.core.load(path, sr=None)
rate, s_wave = scipy.io.wavfile.read(path)

s_wave /= 2 ** (nbits - 1)

all(s_wave == l_wave)
# True
于 2021-03-17T15:13:36.410 回答
2

librosa.core.load支持 24 位音频文件和 96kHz 采样率。正因为如此,转换为浮点数和默认重采样,它可能比scipy.io.wavfile.read许多情况下要慢得多。

于 2019-04-14T15:12:57.843 回答