1.先通俗理解:
參考知乎作者:我的上鋪叫路遙
與其關注特征向量或特征值的實際含義,不如關注為何這樣的特征向量或特征值是有效的。
舉個例子,我本科時的學號是15020140011,可以作為我在大學的一個特征值。但是這個學號有什么具體含義嗎?如果我沒記錯的話,15表示入學年份是2015年,14表示我在本系(1專業(yè))第4個小班,后面的11代表班里的編號。但是這個學號是十分有效的,它是我在大學里唯一的標識,機器只要通過這個學號可以識別我,識別率100%。
MFCC同樣的道理,它的13個系數(shù)(也許還有13個一階差分和13個二階差分)都是通過離散余弦變換(DCT)而來,并取前13個系數(shù)。
DCT的作用,為了獲得頻譜的倒譜,倒譜的低頻分量就是頻譜的包絡,倒譜的高頻分量就是頻譜的細節(jié),這些都是語音識別上經(jīng)過科學驗證十分有效的語音物理信息。但語音識別是對機器來說的,所以我們必須對物理信息進行某種“編碼”,得到的就是MFCC13維特征向量,你是否理解它不重要,只要機器能夠識別就行了。
綜上所述,我認為MFCC的物理含義就是——在語音識別領域,將語音物理信息(頻譜包絡和細節(jié))進行編碼運算得到的一組特征向量。
2.MFCC再認識
用從最初的幾個倒譜系數(shù)(虛線)獲得的頻率包絡覆蓋一段濁音(實線)的頻率圖
MFCC的物理含義,簡單地說可以理解為語言信號的能量在不同頻率范圍的分布。如果把計算出的系數(shù)的低位部分(一般是前12個)作反傅立葉變換(IFFT),就可以得到上圖中虛線表示的信號的頻譜包絡,也就是表示聲帶特征的那一部分低頻信息。
要理解為什么可以這么做,我們先看看倒譜的定義:一種信號的傅里葉變換譜經(jīng)對數(shù)運算后再進行的傅里葉反變換(IFFT)。(IFFT其實就是對頻譜再作一次FFT)
人的發(fā)聲過程可以看作是肺里的氣流通過聲帶這個線性系統(tǒng)。如果用e(t)表示聲音的輸入激勵(音高),h(t)表示聲帶的響應(也即我們需要獲取的特征),那么聽到的語音信號為下面兩幅圖很好地解釋了這個過程,語音信號的頻譜可以看作是低頻的包絡和高頻的細節(jié)相加,在得到倒譜系數(shù)后,我們只需要取低位的系數(shù)便可以得到包絡信息。(這里的x[k]即為倒譜系數(shù))
注意整個過程中我們并沒有明確計算 e(t) 和 h(t) ,而是通過直接對語音信號x(t)作倒譜分析,再提取低位的倒譜系數(shù),就可以獲取我們想要的聲道特征。
有意思的是,對數(shù)頻譜作傅里葉反變換后的域被稱為quefrency domain(對應頻域frequency domain),quefrency domain和時域time domain類似但不完全一樣。提取低位系數(shù)的操作稱為low-time liftering(對應濾波操作filtering)。同樣地,我們可以通過high-time liftering來獲取激勵特征。
當然在MFCC的實際計算中我們并沒有作傅里葉反變換,而是先將頻譜通過一組三角濾波器,再作離散余弦變換(DCT)得到MFCC系數(shù)。但其物理意義是一樣的,即表示信號頻譜的能量在不同頻率區(qū)間的分布。每一個濾波器的作用就是得到對應頻率區(qū)間的頻譜能量,如果我們有26個三角濾波器,就會得到26個MFCC系數(shù),這時候再取低位的系數(shù)就可以代表聲道的特征。