2016-07-04 224 views
3

當執行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中的採樣率變化在哪裏?

回答

6

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

-1

它,因爲ü沒有安裝一些依賴庫,我建議ü安裝sudo apt-get install libav-tools,因爲它在Linux系統中安裝的音頻和視頻工具。

+0

這是不正確的答案yunus。 –