Librosa 的采样率问题
Sampling rate issue with Librosa
在使用库 Librosa :
对 16 位 44.1 khz 音频文件进行 STFT 和逆 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 的采样率变化在哪里?
librosa.load()
功能启用目标采样,其中您导入的音频文件可以重新采样到关键字参数sr
指定的目标采样率。
如果要使用原始采样率,则必须将目标采样率明确设置为 None: 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
结果:
是因为你没有安装一些依赖库,建议你安装sudo apt-get install libav-tools
,因为它会在linux系统中安装音视频工具。
在使用库 Librosa :
对 16 位 44.1 khz 音频文件进行 STFT 和逆 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 的采样率变化在哪里?
librosa.load()
功能启用目标采样,其中您导入的音频文件可以重新采样到关键字参数sr
指定的目标采样率。
如果要使用原始采样率,则必须将目标采样率明确设置为 None: 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
结果:
是因为你没有安装一些依赖库,建议你安装sudo apt-get install libav-tools
,因为它会在linux系统中安装音视频工具。