www.pudn.com > MATLAB-YUYINSHIBIE.rar > mfcc1.m
function r = mfcc(s, fs)
% MFCC
%
% Inputs: s contains the signal to analize
% fs is the sampling rate of the signal
%
% Output: r contains the transformed signal
%
%
%%%%%%%%%%%%%%%%%%
% Mini-Project: An automatic speaker recognition system
%
% Responsible: Vladan Velisavljevic
% Authors: Christian Cornaz
% Urs Hunkeler
[s,fs]=wavread('1.wav');
fs = 12500;
m = 100;
n = 256;
l = length(s);
nbFrame = floor((l - n) / m) + 1;
s=double(s);
s=filter([1 -0.9375],1,s);
for i = 1:n
for j = 1:nbFrame
M(i, j) = s(((j - 1) * m) + i);
end
end
h = hamming(n);
M2 = diag(h) * M;
for i = 1:nbFrame
frame(:,i) = fft(M2(:, i));
end
t = n / 2;
tmax = l / fs;
n2 = 1 + floor(n / 2);
z = m * abs(frame(1:n2, :)).^2;
r = dct(log(z));
plot(r);
% 归一化倒谱提升窗口
% w = 1+6*sin(pi*[1:12]./12);
% w=w/max(w);
% r=r.*w';
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%2005-12-25 modified by Robin
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 获得差分mfcc
% dtm=zeros(size(r));
% for i=3:size(r,1)-2
% dtm(i,:)=-2*r(i-2,:)-r(i-1,:)+r(i+1,:)+2*r(i+2,:);
% end
% dtm=dtm/3;
% % combine mfcc and △mfcc
% % 连接mfcc和差分mfcc
% ccc = [r dtm];
%
% % 去除首尾两帧,因为这两帧的一阶差分参数为0
% r=ccc(3:size(r,1)-2,:);