繪制librosa.filters.mel的mel濾波器組


librosa.filters.mel其norm選項默認為"slaney",意為每個三角形濾波器的面積相同。
怎么繪制這個濾波器組的示意圖呢?

  • 在百度里面搜索 "Mel-filter bank with same bank area",發現stackoverflow里面有一個相關問題。
    • librosa.filters.mel的返回值為一個(n_mels,n_fft/2+1)的ndarray,默認情況下是(128,1025)。在此ndarray中,每一行就是一個三角濾波器。
mel = librosa.filters.mel(22050,2408)
plt.plot(mel.T)


此圖中,縱軸為權重(我的理解:類似於增益?),橫軸不是頻率,而是n_fft。

Questions:

  • 如果想要以頻率作為上圖的x軸,需要做什么?
  • 通過Mel濾波這一步就完成了頻率Hz向梅爾頻率Mel的轉變嗎?

通過查看librosa.spectrum.stft函數的說明:

  • n_fft是分幀后,每個幀的數據點數量。在默認采樣頻率22050的情況下,n_fft設置為2048,即對應\(2047*\alpha * \frac{1}{22050}=0.09283446712018141\)秒的數據
  • 此函數返回復值矩陣D,使得np.abs(D[f,t])是幀t處的頻率binf的大小,而np.angle(D[f,t])是幀t處的頻率binf的相位。
    整數tf可以通過實用函數frame_to_samplefft_frequencies轉換為物理單位。

既然最高采樣頻率為22050,那么stft可以采集的信號的最高頻率應該為11025,得到的頻譜圖的矩陣D為:np.ndarray [shape=(1 + n_fft/2, n_frames), dtype=dtype]
猜想每個bin對應\(11025/1024=10.7hz\)?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM