Abstract:本文意在讲解语音识别的方法,主要包括语音特征提取(Mel频率倒谱系数的提取), softmax 分类器进行四分类,数据库为京剧。
人的听觉系统可以看成一组滤波器族,可以通过这些滤波器得到不同频率的声音,不同的滤波器对不同频率的信号的灵敏程度不一样,Mel频率倒谱系数(MFCC)是一种充分利用人耳感知特性的参数。MFCC和线性频率之间的转换关系如下:
预加重是将语音信号 s(n) 通过一格高通滤波器。此高通滤波器的 z 域如下面的形式:
temp=double(signal);
x=filter([1 -0.9],1,temp);
分帧是把一段语音信号分成 n 帧来处理,每一帧可以为128,256,512,1024。比如说10240点个语音信号,256个点为一帧,那么就有40帧,但是事实上不是40帧,因为帧与帧之间有交叉重叠的区域,假设非重叠区域为80个点,那么一共就有125帧。
signal=enframe(signal,256,80);
窗函数的目的是为了只处理某一段信号,而屏蔽其他的信号,也叫短时信号处理。加窗函数,可以加hamming窗,hanning窗,blackman窗等窗函数,将每一帧的语音信号乘以窗函数,以增加音框左端和右端的连续性。假设一帧信号为256个点,那么窗函数也为256的点。这里我们采用的是hamming窗。那么得到的加窗语音信号为如下:
s = y' .* hamming(256);
加窗函数后信号通过FFT得到其能量后进入Mel频率滤波器组再进行 Log 对数能量,如下所示:
bank=melbankm(24,256,44100,0,0.5,'m');
bank=full(bank);
bank=bank/max(bank(:));
对 F(m) 进行离散余弦转换(DCT)变换。我们需要得到DCT的系数。DCT系数可以通过下式求得:
差分系数用 J 表示,那么:
softmax 分类器适合于多分类,这里不多讲。前面的博文已经有涉及。主要分京剧为4类, happy,angry,sad,grateful .只需要自己准备好输入数据即可。