MFCC梅爾頻譜
參考: https://blog.csdn.net/qq_28006327/article/details/59129110
MFCC和STFT, 小波變換同樣都是時頻分析的工具
只是MFCC算是對人類聽覺特別優化的分析方式
人類在聽覺上,本身對高頻反應較為不敏感(例如2000Hz和3000Hz很多人覺得差不了多少),但是對低頻就較敏感,
為了得到適當大小的聲音特徵,經常把它通過梅爾標度濾波器組(mel-scale filter bank),變換為梅爾頻譜。
梅爾標度濾波器組的原理來自於梅爾標度
Mel-scale filter bank濾波器分為
Mel-filter bank with same bank area (會丟掉高頻特徵)
Mel-filter bank with same bank height
而這濾波部分在python分別對應到librosa的函示庫
(librosa常用來音頻處理的萬能庫)
import numpy as np
import librosamelW=librosa.filters.mel(fs=44100,n_fft=1024,n_mels=40,fmin=0.,fmax=22100)
melW /= np.max(melW,axis=-1)[:,None]
melX = np.dot(X,melW.T)
而在梅爾頻譜上做倒譜分析(取對數,做DCT變換)就得到了梅爾倒譜
倒譜分析是什麼,和詳細的原理,可以可以參照下面這篇,寫得非常好,淺顯易懂
https://blog.csdn.net/zouxy09/article/details/9156785/
import librosa
melM = librosa.feature.mfcc(wav,sr=44100,n_mfcc=20)
簡單來說梅爾倒頻譜的動作
1)先對語音進行預加重,分幀和加窗;
2)對每一個短時分析窗,通過FFT得到對應的頻譜;
3)將上面的頻譜通過Mel濾波器組得到Mel頻譜;
4)在Mel頻譜上面進行倒譜分析(取對數,做逆變換,實際逆變換一般是通過DCT離散餘弦變換來實現,取DCT後的第2個到第13個係數作為MFCC係數),獲得 Mel頻率倒譜係數MFCC,這個MFCC就是這幀語音的特徵;