[x fs]=wavread('8.wav');bank=melbankm(24,256,fs,0,0.4,'t');%Mel濾波器的階數(shù)為24,fft變換的長度為256,采樣頻率為16000Hz%歸一化mel濾波器組系數(shù)bank=full(bank);bank=bank/max(bank(:));for k=1:12 %歸一化mel濾波器組系數(shù)n=0:23;dctcoef(k,:)=cos((2*n+1)*k*pi/(2*24));endw=1+6*sin(pi*[1:12]./12);%歸一化倒譜提升窗口w=w/max(w);%預(yù)加重濾波器xx=double(x);xx=filter([1-0.9375],1,xx);%語音信號分幀xx=enframe(xx,256,80);%對x 256點分為一幀%計算每幀的MFCC參數(shù)for i=1:size(xx,1)y=xx(i,:);s=y'.*hamming(256); t=abs(fft(s));%fft快速傅立葉變換t=t.^2; c1=dctcoef*log(bank*t(1:129));c2=c1.*w';m(i,:)=c2';end%求取一階差分系數(shù)dtm=zeros(size(m));for i=3:size(m,1)-2dtm(i,:)=-2*m(i-2,:)-m(i-1,:)+m(i+1,:)+2*m(i+2,:);enddtm=dtm/3;%求取二階差分系數(shù)dtmm=zeros(size(dtm));for i=3:size(dtm,1)-2dtmm(i,:)=-2*dtm(i-2,:)-dtm(i-1,:)+dtm(i+1,:)+2*dtm(i+2,:);enddtmm=dtmm/3;%合并mfcc參數(shù)和一階差分mfcc參數(shù)ccc=[m dtm dtmm];%去除首尾兩幀,因為這兩幀的一階差分參數(shù)為0ccc=ccc(3:size(m,1)-2,:);ccc% subplot(2,1,1) % ccc_1=ccc(:,1);% plot(ccc_1);title('MFCC');ylabel('幅值');% [h,w]=size(ccc);% A=size(ccc);% subplot(212) % plot([1,w],A);% xlabel('維數(shù)');% ylabel('幅值');% title('維數(shù)與幅值的關(guān)系')
|