語音識別(MFCC)

Abstract本文意在講解語音識別的方法,主要包括語音特徵提取(Mel頻率倒譜系數的提取),softmax 分類器進行四分類,數據庫爲京劇。

1.Mel頻率倒譜系數的提取

人的聽覺系統可以看成一組濾波器族,可以通過這些濾波器得到不同頻率的聲音,不同的濾波器對不同頻率的信號的靈敏程度不一樣,Mel頻率倒譜系數(MFCC)是一種充分利用人耳感知特性的參數。MFCC和線性頻率之間的轉換關係如下:

fmel(f)=2595log(1+f700Hz)

MFCC參數提取如圖1所示。該過程分爲預加重,分幀,加窗函數,FFT運算,Mel頻率濾波器組濾波,取對數能量,DCT求倒譜。
MFCC特徵提取
MFCC

下面來看一段語音信號:
這裏寫圖片描述

1.1 預加重

預加重是將語音信號s(n) 通過一格高通濾波器。此高通濾波器的z 域如下面的形式:

H(z)=1a×(z1)

係數其中 a 介於 0.9 和 1.0 之間。若以時域的表達式來表示,預強調後的訊號s2(n) 爲:
s2(n)=s(n)a×s(n1)

這個是爲了補償語音受到發聲系統所壓抑的高頻部分,使高頻信號突顯出來。
temp=double(signal);
x=filter([1 -0.9],1,temp);

可以得到下面經過高通濾波器後的語音信號。
這裏寫圖片描述

2

圖3爲原始語音信號的頻譜和經過高通濾波器的語音信號的頻譜。
這裏寫圖片描述
3

1.2 分幀

分幀是把一段語音信號分成n 幀來處理,每一幀可以爲128,256,512,1024。比如說10240點個語音信號,256個點爲一幀,那麼就有40幀,但是事實上不是40幀,因爲幀與幀之間有交叉重疊的區域,假設非重疊區域爲80個點,那麼一共就有125幀。

signal=enframe(signal,256,80);

1.3 加窗函數

窗函數的目的是爲了只處理某一段信號,而屏蔽其他的信號,也叫短時信號處理。加窗函數,可以加hamming窗,hanning窗,blackman窗等窗函數,將每一幀的語音信號乘以窗函數,以增加音框左端和右端的連續性。假設一幀信號爲256個點,那麼窗函數也爲256的點。這裏我們採用的是hamming窗。那麼得到的加窗語音信號爲如下:

S(n)=S(n)×W(n)

W(n) 的形式如下所示:
W(n,a)=(1a)a×cos(2πn/(N1)),0nN1

不同a 得到不同窗函數。
漢明窗如圖4所示:
這裏寫圖片描述
4hamming

現在我只取前256個語音信號來加窗函數。
s = y' .* hamming(256);

這裏寫圖片描述

1.5 Mel頻率濾波器組

加窗函數後信號通過FFT得到其能量後進入Mel頻率濾波器組再進行Log 對數能量,如下所示:

F(m)=log(Mel×X(k)2)
.
其中Mel 係數通過工具箱(mp3_toolbox_v2.0)求得。
bank=melbankm(24,256,44100,0,0.5,'m');
bank=full(bank);
bank=bank/max(bank(:));

1.6 DCT求倒譜

F(m) 進行離散餘弦轉換(DCT)變換。我們需要得到DCT的係數。DCT係數可以通過下式求得:

dct=cos((2×n+1)kπ/(2N)

其中N 爲Mel濾波器的個數。
最終得到的倒譜爲:
c(m)=dct×F(m)

那麼N 幀信號就會得到N 個倒譜。

1.7 求解差分系數

差分系數用J 表示,那麼:

J(n)=2c(n2)c(n1)+c(n+1)+2c(n+2)3

這樣倒譜系數和差分系數就組成了MFCC 係數。

2.Softmax分類

softmax 分類器適合於多分類,這裏不多講。前面的博文已經有涉及。主要分京劇爲4類,happy,angry,sad,grateful .只需要自己準備好輸入數據即可。

3.GUI

這裏寫圖片描述
具體程序見資源。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章