采样率问题与Librosa

问题描述:

当执行STFT,然后在一个16位的44.1 kHz的音频文件与库Librosa逆STFT(ISTFT):采样率问题与Librosa

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中的采样率变化在哪里?

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

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

通过示例的方式:

默认设置 - 子采样为默认22050赫兹

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 

子采样到指定rate,16,000 Hz

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

结果: enter image description here

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

+0

这是不正确的答案yunus。 –