MFCC参数的提取包括以下稿族氏几个步骤:
预滤波(低通):前端带宽为300-3400Hz的抗混叠滤波器。
A/D变换:采样频率,线性量化精度。
预加穗侍重:通过一个一阶有限激励响应高通滤波器,使信号的频谱变得平坦,不易受到有限字长效应的影响。
分帧:根据语音的短时平稳特性,语音可以以帧为单位进行处理,实验中选取的语音帧长为32ms,帧叠为16ms。
加窗:采用哈明窗对一帧语音加窗,以减小吉布斯效应的影响。
快速傅立叶变换(Fast Fourier Transformation, FFT):将时域信号变换成为信号的功率谱。
三角窗滤波:用一组Mel频标上线性分布的三角窗滤波器(共键散24个三角窗滤波器),对信号的功率谱滤波,每一个三角窗滤波器覆盖的范围都近似于人耳的一个临界带宽,以此来模拟人耳的掩蔽效应。
求对数:三角窗滤波器组的输出求取对数,可以得到近似于同态变换的结果。
离散余弦变换(Discrete Cosine Transformation, DCT):去除各维信号之间的相关性,将信号映射到低维空间。
谱加权:由于倒谱的低阶参数易受说话人特性、信道特性等的影响,而高阶参数的分辨能力比较低,所以需要进行谱加权,抑制其低阶和高阶参数。
倒谱均值减(Cepstrum Mean Subtraction, CMS):CMS可以有效地减小语音输入信道对特征参数的影响。
差分参数:大量实验表明,在语音特征中加入表征语音动态特性的差分参数,能够提高系统的识别性能。可用到了MFCC参数的一阶差分参数和二阶差分参数。
采样前的低通滤波,主要是消除采样时的频谱混叠。由硬件完成。
预加重主要是提高高频的频谱分量。软件,硬件都可以完成。
预加重前,也可以用高通滤波器,消除低频噪音。
如果计算mfcc是有了预加重。之前的预加重就不要做。
采样前的硬件低通滤波是一定要做的。
计算mfcc时的滤波,看起的作用是什么?如果是进一步消除噪音,那就必须做。
%mfccfunction mfc=mfcc(x)
%%%%%%%%%%%%%%%%%%%%%%%%%
%对输入的语音序列x进行mfcc参数提取,返回mfcc参数和一阶差分mfcc参数,mel滤波器的阶数为24
%fft变换长度为256,采样频率为8000HZ,对x 256点分为一帧
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
bank=melbankm(24,256,8000,0,0.5,'m')
%归一化mel滤波器组参数
bank=full(bank)
bank=bank/颤滑max(bank((:))
%DCT系数,12*24
for k=1:12
n=0:23
dctcoef(:,k)=cos((2*n+1)*k*pi/(2*24))
end
%归穗银一化倒谱提升窗口
w=1+6*sin(pi*[1:12]./12)
w=w/max(w)
%预加重滤波器
xx=double(x)
xx=filter([1 -0.9375],1,xx)
%语音信号分茄族腊帧
xx=enframe(xx,256,80)
%计算每帧的mfcc参数
for i=1:size(xx,1) %
y=xx(i,:)
s=y'.*hamming(256)
t=abs(fft(s))
t=t.^2%计算能量
c1=dctcoef*log(bank*t(1:129))%dctcoef为dct系数,bank归一化mel滤波器组系数
c2=c1.*w'%w为归一化倒谱提升窗口
m(i,:)=c2'
end
%差分系数
dtm=zeros(size(m))
for i=3:size(m,1)-2
dtm(i,:)=-2*(i-2,:)-m(i-1,1)+2*m(i+2,:)
end
dtm=dtm/3
%合并mfcc参数和一阶差分mfcc参数
mfc=[m dtm]
%去除首尾两帧,因为这两帧的一阶差分参数为0
mfc=mfc(3:size(m,1)-2,:)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)