語音處理中MFCC里MFCC係數中的log energy係數是什麼?

請問MFCC里是1個log energy係數和12個dct係數,log energy係數是什麼呢?是怎麼提取到的呢?


假設題主是用kaldi,並且mfcc的參數--num-ceps=13

1、--use-energy=false的話,此時會輸出13維特徵,分別是C0~C12,這個就是MFCC的倒譜係數,首維會是C0,作為這一幀的能量分量,數值偏大

2、--use-energy=true的話(默認),此時仍然會輸出13維特徵,分別是log-energy+C1~C12,即把C0替換為log-energy,首維會是log-energy,數值不會過大

這個log-energy是啥呢?這裡用HTKbook-P79來解釋:

log energy,n=1,...,N

對每個speech sample窗的signal,平方之和後取對數,就可得到the log energy輸出

以Kaldi的code來看,也一樣如此:

feat/feature-mfcc.cc

至於log-energy的作用,我沒記錯的話,由於C0數值過大,直接使用會帶來識別率的下降,而log-energy恰到,同時根據log-energy也可以作為VAD的評判標準


接著 @Leon晉 的往下解釋下,在

戚少商:從聲門結構到LPC-MFCC(3)-倒譜分析zhuanlan.zhihu.com圖標

中,我解釋過,倒譜的計算式為 widetilde{x}(k)=IDFT(logleft| X(omega) 
ight|) ,log其實來源於倒譜。而MFCC的全名叫做Mel Frequency Cepstrum Cofficident,其實是倒譜和梅爾頻率兩部分組成的產物。而 @Leon晉 提到的c1-c13在頻率上的對應是梅爾頻率化以後的產物。

E=logsum_{n=1}^{N}{s_{n}^{2}}

關於這個式子我再解釋下,其中 sum_{n=1}^{N}{s_n^2}=r_{xx}(0)=sum_{n=1}^{N}{s_n^2}z^{-n}|_{z=1}=S_{xx}(z)|_{z=1} ,這裡 S_{xx}(z) 是energy density spectrum。因為 z=re^{jomega}=1Rightarrow omega=0 ,所以 S_{xx}(z)|_{z=1} 其實代指的是信號的直流分量,然後再用log收一下大小。

利益相關:前語音信號演算法工程師,現NTNU電子系聲學方向研究生。

宣傳一波專欄。

Charlie的音頻處理實驗室zhuanlan.zhihu.com圖標

。。。順便求一波2018暑期實習,2019語音方向的工作。


我就拿HTK中特徵提取模塊HCopy來說明吧

明天寫 先mark下


推薦閱讀:

說話人識別中取到i-vector之後怎麼做分類?
讓機器聽懂人類語言,主流麥克風陣列技術解讀
AI(I)語音(I):MFCC特徵參數提取
如何在國內學習Amazon Echo的成功經驗?

TAG:語音識別 | 計算機科學 | 語音處理 | 聲紋識別 |