📄 mfccnew1.m
字号:
clear all
for g=1:20
fname=sprintf('D:\\study\\师姐论文\\邢峰师姐\\邢峰论文程序\\邢峰论文程序\\audio files\\speech\\%d.wav',g);
x=wavread(fname);
x=x(:,1);
[c,l]=wavedec(x,3,'db4');
ca=appcoef(c,l,'db4',3);%近似系数
x=ca;
%规一化mel滤波器组系数
bank=melbankm(24,128,22050);
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,128,64);%对信号x分帧处理,每帧有128个采样点,相邻帧之间有50%的叠加率
%计算每帧的MFCC参数
for i=1:size(xx,1)
y=xx(i,:);
s=y'.*hamming(128);
t=abs(fft(s));
t=t.^2;
c1=dctcoef*log(bank*t(1:65));
c2=c1.*w';
m(i,:)=c2';
end
[row col]=size(m);
mfcc=zeros(1,12);
for i=1:col
for j=1:row
mfcc(1,i)=mean(m(j,i));
end
end
mfccspeech(g,:)=mfcc;
end
mfccspeech
clear all
for g=1:20
fname=sprintf('D:\\study\\师姐论文\\邢峰师姐\\邢峰论文程序\\邢峰论文程序\\audio files\\music\\%d.wav',g);
x=wavread(fname);
x=x(:,1);
[c,l]=wavedec(x,3,'db4');
ca=appcoef(c,l,'db4',3);%近似系数
x=ca;
%规一化mel滤波器组系数
bank=melbankm(24,128,22050);
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,128,64);%对信号x分帧处理,每帧有128个采样点,相邻帧之间有50%的叠加率
%计算每帧的MFCC参数
for i=1:size(xx,1)
y=xx(i,:);
s=y'.*hamming(128);
t=abs(fft(s));
t=t.^2;
c1=dctcoef*log(bank*t(1:65));
c2=c1.*w';
m(i,:)=c2';
end
[row col]=size(m);
mfcc=zeros(1,12);
for i=1:col
for j=1:row
mfcc(1,i)=mean(m(j,i));
end
end
mfccmusic(g,:)=mfcc;
end
mfccmusic
clear all
for g=1:20
fname=sprintf('D:\\study\\师姐论文\\邢峰师姐\\邢峰论文程序\\邢峰论文程序\\audio files\\speech with music\\%d.wav',g);
x=wavread(fname);
x=x(:,1);
[c,l]=wavedec(x,3,'db4');
ca=appcoef(c,l,'db4',3);%近似系数
x=ca;
%规一化mel滤波器组系数
bank=melbankm(24,128,22050);
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,128,64);%对信号x分帧处理,每帧有128个采样点,相邻帧之间有50%的叠加率
%计算每帧的MFCC参数
for i=1:size(xx,1)
y=xx(i,:);
s=y'.*hamming(128);
t=abs(fft(s));
t=t.^2;
c1=dctcoef*log(bank*t(1:65));
c2=c1.*w';
m(i,:)=c2';
end
[row col]=size(m);
mfcc=zeros(1,12);
for i=1:col
for j=1:row
mfcc(1,i)=mean(m(j,i));
end
end
mfccswm(g,:)=mfcc;
end
mfccswm
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -