📄 bprengong.m
字号:
clear;
num=15;
disp('正在计算识别模型...')
for i=1:num
fname = sprintf('%ss%d.wav', 'data\train\', i);
[s, fs] = wavread(fname);
v =mfcc(s, fs);
[n,m]=size(v);
a=reshape(v,1,n*m);
b=a(1:15);
ref(i).p = b;
end
p=ref(1).p;
for i=1:num-1
p=[p;ref(i+1).p];
end
T=[1 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0;
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0;
0 0 0 1 0 0 0 0 0 0 0 0 0 0 0;
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0;
0 0 0 0 0 1 0 0 0 0 0 0 0 0 0;
0 0 0 0 0 0 1 0 0 0 0 0 0 0 0;
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0;
0 0 0 0 0 0 0 0 1 0 0 0 0 0 0;
0 0 0 0 0 0 0 0 0 1 0 0 0 0 0;
0 0 0 0 0 0 0 0 0 0 1 0 0 0 0;
0 0 0 0 0 0 0 0 0 0 0 1 0 0 0;
0 0 0 0 0 0 0 0 0 0 0 0 1 0 0;
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
];
Pr=[min(p(1,:)),max(p(1,:))];
for k=2:num
Pr=[Pr;min(p(k,:)),max(p(k,:))];
end
p=p';
T=T';
%net=newff(Pr,[16,25,15],{'tansig','logsig','purelin'},'traingdm');
%net.trainParam.show = 50;
%net.trainParam.lr = 0.05;
%net.trainParam.epochs = 10000;
%net.trainParam.goal = 1e-5;
%net =train(net,p,T);
%Y=sim(net,p);
%yc=vec2ind(Y);
maxvalue=0;k=0;
disp('正在计算测试识别的结果...')
for i=1:num
fname = sprintf('%ss%d.wav', 'data\test\', i);
[s, fs] = wavread(fname);
v =mfcc(s, fs);
[n,m]=size(v);
a_test=reshape(v,1,n*m);
b_test=a_test(1:15);
test(i).p_test = b_test;
end
p_test=test(1).p_test;
for i=1:num-1
p_test=[p_test;test(i+1).p_test];
end
p_test=p_test';
%Y_test=sim(net,p_test);
[nb,minb,maxb,na,mina,maxa]=premnmx(p_test,p);
net=newff(Pr,[25,15],{'tansig','logsig'},'traingdm');
net=init(net);
net.trainParam.show = 50;
net.trainParam.lr = 0.2;
net.trainParam.epochs = 10000;
net.trainParam.goal = 1e-5;
%[n,m]=size(na);
%na=reshape(na,1,n*m)
net=train(net,nb,na);
nc= sim(net,nb);
c=postmnmx(nc,mina,maxa);
[ntest,mintest,maxtest]=premnmx(p_test);
nnetout= sim(net,ntest);
netout=postmnmx(nnetout,mintest,maxtest);
real=p;
me=mean(real-netout)
st=std(netout-real)
save e:\mybiye\mymatlabsuoshi\rengongshenjingnetwork\wzy.txt c -ASCII;
%net=newff(minmax(p),[10,15],{'tansig','logsig'},'traingdm');
%net.trainParam.show = 50;
%net.trainParam.lr = 0.05;
%net.trainParam.epochs = 100;
%net.trainParam.goal = 0.1;
%net=train(net,p,T);
%y= sim(net,p);
%y_test= sim(net,p_test);
%maxvalue=0;k=0;
%for m=1;num
%for n=1:num
%if (Y_test(n,m)>maxvalue)
% maxvalue=Y_test(n,m);
% k=n;
%end
%end
%msg = sprintf('测试说话人 %d 和模板中的说话人 %d 匹配', m, k);
%disp(msg);
%maxvalue=0;
% k=0;
%end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -