Abstract:本文意在講解語音識別的方法,主要包括語音特徵提取(Mel頻率倒譜系數的提取),
1.Mel頻率倒譜系數的提取
人的聽覺系統可以看成一組濾波器族,可以通過這些濾波器得到不同頻率的聲音,不同的濾波器對不同頻率的信號的靈敏程度不一樣,Mel頻率倒譜系數(MFCC)是一種充分利用人耳感知特性的參數。MFCC和線性頻率之間的轉換關係如下:
MFCC參數提取如圖1所示。該過程分爲預加重,分幀,加窗函數,FFT運算,Mel頻率濾波器組濾波,取對數能量,DCT求倒譜。
下面來看一段語音信號:
1.1 預加重
預加重是將語音信號
係數其中
這個是爲了補償語音受到發聲系統所壓抑的高頻部分,使高頻信號突顯出來。
temp=double(signal);
x=filter([1 -0.9],1,temp);
可以得到下面經過高通濾波器後的語音信號。
圖3爲原始語音信號的頻譜和經過高通濾波器的語音信號的頻譜。
1.2 分幀
分幀是把一段語音信號分成
signal=enframe(signal,256,80);
1.3 加窗函數
窗函數的目的是爲了只處理某一段信號,而屏蔽其他的信號,也叫短時信號處理。加窗函數,可以加hamming窗,hanning窗,blackman窗等窗函數,將每一幀的語音信號乘以窗函數,以增加音框左端和右端的連續性。假設一幀信號爲256個點,那麼窗函數也爲256的點。這裏我們採用的是hamming窗。那麼得到的加窗語音信號爲如下:
不同
漢明窗如圖4所示:
現在我只取前256個語音信號來加窗函數。
s = y' .* hamming(256);
1.5 Mel頻率濾波器組
加窗函數後信號通過FFT得到其能量後進入Mel頻率濾波器組再進行
其中
bank=melbankm(24,256,44100,0,0.5,'m');
bank=full(bank);
bank=bank/max(bank(:));
1.6 DCT求倒譜
對
其中
最終得到的倒譜爲:
那麼
1.7 求解差分系數
差分系數用
這樣倒譜系數和差分系數就組成了
2.Softmax分類
3.GUI
具體程序見資源。