function ccc = mfcc(x)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% function ccc=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)%size(xx,1)返回 xx 的维数
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