Librosa的采样率问题

时间:2016-07-04 15:40:36

标签: python audio signal-processing librosa

当进行STFT,然后对具有库Librosa的16位44.1 khz音频文件进行反向STFT(iSTFT)时:

import librosa

y, sr = librosa.load('test.wav', mono=False)
y1 = y[0,]
S = librosa.core.stft(y1)
z1 = librosa.core.istft(S, dtype=y1.dtype)
librosa.output.write_wav('test2.wav', z1, sr)

输出只是一个22 khz的音频文件。为什么? librosa中的抽样率变化在哪里?

2 个答案:

答案 0 :(得分:10)

librosa.load()功能启用目标采样,其中您导入的音频文件可以重新采样到关键字参数sr指定的目标采样率。

如果要使用原始采样率,则必须将目标采样率明确设置为无:sr=None。默认情况下,sr=22050,这就是为什么你的输出是〜22khz。

举例来说:

默认设置 - 子采样到默认值22,050 Hz

In[51]: filename = librosa.util.example_audio_file()
In[52]: y1, sr1 = librosa.load(filename)
In[53]: print sr1
22050

明确设置sr=None可确保原始采样保留

In[54]: y2, sr2 = librosa.load(filename,sr=None)
In[55]: print sr2
44100

二次采样到指定的速率,16,000 Hz

In[56]: y3, sr3 = librosa.load(filename,sr=16000)
In[57]: print sr3
16000

结果: enter image description here

答案 1 :(得分:-2)

因为你没有安装一些依赖库,我建议你安装sudo apt-get install libav-tools,因为它在linux系统中安装了音频和视频工具。