1.為什麼用mfcc特征:
在梅爾軸上,聽覺是等距離的、等差的,但聽覺軸上不是。聽覺音高是梅爾,一個是響度,一個是音高,一起用時是最好的聽覺特征,MFCC隻用了響度。有一個假設是mfcc特征的均值(mean)和标準差(std)都是一樣的。
2.為何預加重:
聲門氣流波,每倍頻音下降12分貝。這是我們聲帶的特征。經過咽腔,口腔進行共振,最後通過嘴唇發出。在唇齒之間進行唇嗆輻射時,每倍頻音增加6分貝。抵消之後是:每倍頻音下降6分貝。即:
- 100hz時是0db
- 200hz是-6db
- 400hz是-12db
是以我們采用預加重,對高頻提升一下,盡量讓整個頻譜平坦一點。
3.預加重:
在預加重公式中,傳輸函數如下:

假設我們采集到的樣本點是sp= 1,2,3,1,2,3,1,2,3。 其中,a一般取0.95-0.97之間的值,z-1就是上一個時刻,z-2就是上上個時刻,這裡的“1”不是數值1,而是要代進去sp樣本點的值。要會用傳輸函數。
4.分幀:
語音識别、語音處理時,通常每秒取40幀。對于16k采樣率的語音,指每秒鐘取16k個點,就是16000點。人耳是0.1秒才能感覺到語音。
每10ms處理一次,就是每跳過160點處理1幀,即每幀距離是160個點,幀的長度就是第0點開始取。第一幀開始處理,就是第0點開始取,第1次從0點開始取,第二次從160點開始取,第三次從320點開始取……每次取400個點開始分析,即第0-第399點。
因為我們要對它做傅裡葉變換。傅裡葉變換要求我們做頻譜分析時,信号必須是平穩信号,即他的統計信号處處不變。分析視窗取多少?25ms。那麼為什麼取25ms?在25ms内人的口腔被認為是固定不動的。這就是平穩的。超過25ms就變異了。為什麼256或512?因為我們做快速傅裡葉變換時,需要2的整數倍個0。加000000000…… 112個0。然後快速傅裡葉變換結束後,分幀結束,後面進行加窗漢明窗。FFT(快速傅裡葉變換)的點,得出的點取一半,隻有一半的點是有用的,8k采樣率隻取一半,4k的點是有用的,其他的都是低頻段。這個地方在每次提特征的時候設定采樣率時都要注意一下: --sample-frequency=8000 就是采樣率取8000。
5.加窗:
為什麼要加窗?加窗會導緻什麼?
加上任何窗函數都會對它的頻譜産生扭曲,因為它會洩露頻譜,洩露的頻譜主要都集中在它真正的頻率附近,旁邊的頻譜不會受到影響。
在這裡需要複習一個高數的知識點:第一類間斷點和第二類間斷點。不再詳細提及,直接查資料就行。
兩個概念:共振峰、諧波。在圖上要知道哪個地方是共振峰,哪個地方是諧波。上一篇部落格有提到(按時間排序)。怎麼畫出來呢?取實部的模,實部的平方+虛部的開平方,把它的模取對數。或者用 db。
6.離散餘弦變換DCT:
前面的數值非常大,後面的數值越來越小,幾乎為0。後面的就可以抛棄掉。圖檔壓縮原理就是DCT:後面的抛棄後,就得到壓縮圖檔。使用DCT它有兩個好處,第一個好處:後面的幾乎為0可以丢掉;第二個好處:加的梅爾窗有重疊,去除參數之間的相關性,提高識别效率。