梅爾倒譜系數(MFCC)做為語音信号進行中的常見特征之一,在各個語音任務中都取得了不錯的效果,本文将講解一下MFCC特征的通用的提取過程。與大家一起探讨一下~
MFCC特征通用提取過程
預設連續語音為
共含有107000個點;預加重系數
幀長為
,幀移
;窗函數為
,fft的個數為
,采樣頻率為
預加重、分幀、加窗
- 預加重
預加重的目的是為了去除口唇輻射的影響,增加語音的高頻分辨率,其具體實作可以用差分方程實作:
預加重後,語音信号變化為
,數組大小還是107000。 其中預加重系數
- 分幀
為了保證輸入信号是平穩的,我們需要将語音分成一小段(幀),也就是分幀。幀數為
,則其
numframes
對連續語音
以
個采樣點為一幀的長度,以
個采樣點為相鄰幀移動的距離,對不足一幀長的進行補零,最終我們可以獲得
個幀。
- 加窗
加窗是為了解決由于信号的非周期截斷,導緻頻譜在整個頻帶内發生了拖尾現象的洩漏問題,可以使得使全局更加連續,避免出現吉布斯效應。窗函數一般為“漢明”窗、‘’‘漢甯’窗、矩形窗。
加窗相當于把每一語音幀裡面的抽樣點與窗函數中對應元素的相乘。設每一幀為
則加窗操作為:
for i in range(frame_len):
x[i] = x[i]*w[i]
快速傅裡葉變換 FFT
離散傅裡葉變化的公式如下:
,其中
為滿足FFT“分治”的政策,我們需要對幀長
進行補零,使其補零後的長度
為2的幂次方;比如當原始幀長為
,我們對其進行補零後的長度為
,其中
。
- 在采樣頻率 為 的情況下, 的n隻是一個離散的數值,那每一點到底代表了什麼頻率分量?
假設采樣頻率是 ,則 ,是以事實上把 的式子裡面的 用 替換。很明顯,在特定的 點的頻率分量的頻率為 ,進而得出 代表的是頻率為 的頻率“分量”
因為傅裡葉變化固有的性質:實數信号變換的結果
是一組複數,裡面一半資料和另一半是共轭的,是以有一半的FFT是多餘的,是以經過的FFT輸出的次元為
,(實數和虛數不分開表示的情況下)經過FFT後,計算頻譜圖的功率譜。
Mel濾波器組
MFCC的分析着眼于人耳的聽覺特征,人耳所聽到的聲音高低與聲音的頻率并不成線性正比關系,而用Mel頻率尺度更符合人耳的聽覺特性。Mel頻率與實際頻率的具體關系為如下:
Mel頻率尺度濾波器組
其實作過程如下:
相鄰三角形濾波器之間的關系
- 根據上述公式将實際頻率尺度轉化為Mel頻率尺度
- 在Mel頻率域上确定最低頻率 、與最高頻率 和Mel濾波器個數 。将每一個三角形濾波器的中心頻率 在Mel頻率與上等間隔配置設定。設 分别為第 個三角形濾波器的下限、中心頻率、上限,則:
- 每個三角形濾波器 為:
4.根據語音信号的功率譜
,求每一個三角形濾波器的輸出:
注意上述式子的采樣點“k”與實際頻率f的對應關系為:
倒譜分析
語音信号的倒譜分析就是求信号倒譜特征參數的過程,可以通過同态處理來處理。同态處理實作了卷積關系變化為求和關系的分離操作。
頻譜圖
上圖是一個語音的頻率圖,其中紅色細線為頻譜的包絡(Spectral Envelope),包絡攜帶聲音的辨識屬性,特别重要,是以我們需要把它提取出來。為了将其提取出來,我可以使用同态處理的方法:
- 我們可以将頻譜看成頻譜包絡(Spectral Envelope)與頻譜細節(Spectral details)的乘積。是以我們對其求log,将其轉化為加性關系
- 其中頻譜包絡(Spectral Envelope)可以視為“低頻信号”、頻譜細節(Spectral details)可以識别“高頻信号”
- 通過DCT将其分離,我們稱為“倒譜”,對DCT結果儲存前若幹維的低頻資訊即為頻譜包絡(Spectral Envelope)
Delta與二階Delta
MFCC隻是描述了一幀語音上的譜包絡,但是語音信号似乎有一些動态上的資訊,是以就引入了一階差分(deltas)和二階差分(deltas-deltas),其計算公式如下:
其中t表示第幾幀,N通常取2,c指的就是MFCC中的某個系數。deltas-deltas就是在deltas上再計算以此deltas。
引用
furious:深入了解離散傅裡葉變換(DFT)zhuanlan.zhihu.com
Anssel:AI(I)語音(I):MFCC特征參數提取zhuanlan.zhihu.com
倒譜分析(Cepstrum Analysis)blog.csdn.net
《語音信号處理》趙力著