이응재*_*이응재 4 python scipy librosa
我load对librosa的read功能和的功能之间的区别有疑问scipy.io.wavfile。
from scipy.io import wavfile
import librosa
fs, data = wavfile.read(name)
data, fs = librosa.load(name)
Run Code Online (Sandbox Code Playgroud)
导入的语音文件是同一文件。如果运行上面的代码,则数据的值从两个函数中得出的结果是不同的。我想知道为什么数据值不同。
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
Run Code Online (Sandbox Code Playgroud)
来自的文档字符串librosa.core.load:
加载音频文件作为浮点时间序列。
音频将自动重新采样到给定的速率(默认sr = 22050)。
要保留文件的原始采样率,请使用sr = None。
scipy.io.wavfile.read 不会自动对数据重新采样,并且如果采样是文件中的整数,则采样不会转换为浮点。