https://blog.csdn.net/xmdxcsj/article/details/51228791
基本含義
MFCC是Mel-Frequency Cepstral Coefficients的縮寫,顧名思義MFCC特徵提取包含兩個關鍵步驟:轉化到梅爾頻率,然後進行倒譜分析。
梅爾頻率
梅爾刻度是一種基於人耳對等距的音高(pitch)變化的感官判斷而定的非線性頻率刻度。和頻率的赫茲的關係如下:
所以當在梅爾刻度上面上是均勻分度的話,對於的赫茲之間的距離將會越來越大,所以梅爾刻度的濾波器組的尺度變化如下:
梅爾刻度的濾波器組在低頻部分的分辨率高,跟人耳的聽覺特性是相符的,這也是梅爾刻度的物理意義所在。
這一步的含義是:首先對時域信號進行傅里葉變換轉換到頻域,然後再利用梅爾頻率刻度的濾波器組對應頻域信號進行切分,最後每個頻率段對應一個數值。
倒譜分析
倒譜的含義是:對時域信號做傅里葉變換,然後取log,然後再進行反傅里葉變換。可以分爲復倒譜、實倒譜和功率倒譜,我們用的是功率倒譜。
倒譜分析可用於將信號分解,兩個信號的卷積轉化爲兩個信號的相加。舉例如下:
假設上面的頻率譜X(k),時域信號爲x(n)那麼滿足
考慮將頻域X(k)拆分爲兩部分的乘積:
假設兩部分對應的時域信號分別是h(n)和e(n),那麼滿足:
此時我們是無法區分開h(n)和e(n)。
對頻域兩邊取log:
然後進行反傅里葉變換:
假設此時得到的時域信號如下:
雖然此時獲得時域信號x’(n)即爲倒譜,已經和原始的時域信號x(n)不一樣,但是可以把時域信號的卷積關係轉化爲了線性加關係。
對應上圖的頻域信號,可以拆分成兩部分的乘積:頻譜的包絡和頻譜的細節。頻譜的峯值即爲共振峯,它決定了信號頻域的包絡,是辨別聲音的重要信息,所以進行倒譜分析目的就是獲得頻譜的包絡信息。包絡部分對應的是頻譜的低頻信息,而細節部分對應的是頻譜的高頻信息。倒譜分析已經將兩部分對應的時域信號的卷積關係轉化爲了線性加關係,所以只需要將倒譜通過一個低通濾波器即可獲得包絡部分對應的時域信號h’(t)。
基本流程
預加重
- 目的
爲了消除發聲過程中,聲帶和嘴脣造成的效應,來補償語音信號受到發音系統所壓抑的高頻部分。並且能突顯高頻的共振峯。
簡單理解就是在頻域上面都乘以一個係數,這個係數跟頻率成正相關,所以高頻的幅值會有所提升。實際上就是通過了一個H(z)=1−kz−1H(z)=1−kz−1高通濾波器。 - 實現 s′n=sn−k∗sn−1sn′=sn−k∗sn−1
加窗
- 目的
用於平滑信號,使用漢明窗加以平滑的話,相比於矩形窗函數,會減弱FFT以後旁瓣大小以及頻譜泄露。 - 實現
使用漢明窗對信號進行加窗處理s′n={0.54−0.46cos(2π(n−1)N−1)}∗snsn′={0.54−0.46cos(2π(n−1)N−1)}∗sn
頻域轉換
- 目的
將時域信號轉化到頻域進行後續的頻率分析 - 實現
幅度譜:Si(k)=∑n=1Nsi(n)e−j2πkn/N1≤k≤KSi(k)=∑n=1Nsi(n)e−j2πkn/N1≤k≤K
功率譜:Pi(k)=1N|Si(k)2|Pi(k)=1N|Si(k)2|
使用梅爾刻度濾波器組過濾
- 目的
因爲頻域信號有很多冗餘,濾波器組可以對頻域的幅值進行精簡,每一個頻段用一個值來表示。 - 實現
對於FFT得到的幅度譜,分別跟每一個濾波器進行頻率相乘累加,得到的值即爲該幀數據在在該濾波器對應頻段的能量值。如果濾波器的個數爲22,那麼此時應該得到22個能量值
能量值取log
由於人耳對聲音的感知並不是線性的,用log這種非線性關係更好描述。取完log以後纔可以進行倒譜分析。
離散餘弦變換
DCT和DFT類似,但是隻使用實數,不涉及複數運算。信號經過DCT變換以後,能量會集中到低頻部分,可以用於圖像壓縮。
1. 目的
按照倒譜的定義,該步需要進行反傅里葉變換然後通過低通濾波器獲得最後的低頻信號。這裏使用DCT直接就可以獲取頻率譜的低頻信息。
由於濾波器之間是有重疊的,所以前面的獲得的能量值之間是具有相關性的,DCT還可以對數據進行降維壓縮和抽象,獲得最後的特徵參數。相比於傅里葉變換,離散餘弦變換的結果沒有虛部,更好計算。
2. 實現
差分
- 目的
由於語音信號是時域連續的,分幀提取的特徵信息只反應了本幀語音的特性,爲了使特徵更能體現時域連續性,可以在特徵維度增加前後幀信息的維度。常用的是一階差分和二階差分。 - 實現 dt=∑Θθ=1θ(ct+θ−ct−θ)2∑Θθ=1θ2dt=∑θ=1Θθ(ct+θ−ct−θ)2∑θ=1Θθ2
MFSC和MFCC
參考【3】第四章,MFSC(log mel-frequency spectral Coefficients)相比於MFCC,缺少了DCT這一步處理。相比於MFSC,MFCC具有以下優勢:
- 對特徵進行了去相關和壓縮,更適合Diagonal covariance GMMs這種建模方式。
- MFCC數據量少。
但是對於DNN這種訓練方式,發現MFSC的效果要比MFCC好。主要原因:
- MFSC具有相關性,表現在頻譜上面的較爲平滑
- MFSC具有更高的維度
參考文獻
- htk book
- http://practicalcryptography.com/miscellaneous/machine-learning/guide-mel-frequency-cepstral-coefficients-mfccs/
- https://tspace.library.utoronto.ca/bitstream/1807/44123/1/Mohamed_Abdel-rahman_201406_PhD_thesis.pdf
- http://www.speech.cs.cmu.edu/15-492/slides/03_mfcc.pdf