MFCC,即倒谱系数,也是语音的一个特征之一,能够充分利用人耳的特性
% 具体的求法就是预处理,然后加窗,进行傅立叶变换,再求出功率普
% 然后得出其自然对数,最后进行dct变换
% 代码是用matlab写的,用到的一个语音工具箱,可以从网络上下载。
function mfcoef=mfcccoef(filename);
x=wavread(filename);
%归一化mel filter cof
bank=melbankm(24,256,8000,0,0.5,'m');
bank=full(bank);
bank=bank/max(bank(:));
% dct 系数
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);
% 一阶高通滤波器 1-0.9375z(-1)
xx=double(x);
xx=filter([1 -0.9375],1,xx);
% 分帧
y=enframe(xx,256,80);
[NumFrame,FrameLen]=size(y);
for i=1:NumFrame
y=xx(i,:);
s=y'.*hamming(256); %hamming 窗
t=abs(fft(s)); %傅立叶变换
t=t.^2; %功率普
c1=dctcoef*log(bank*t(1:129)+eps);
%c1=dct(log(bank*t(1:129)+eps));
c2=c1.*w';
m(i,:)=c2';
end
NumFrame
mfcoef=m;