该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这是我编的程序:
disp('开始进行模板训练...')
% filename=strcat('D:\exercise\matlab\try_it\H0.wav');%循环读入1—1,1—2,...1-20
x = wavread('D:\exercise\matlab\try_it\kaideng1.wav')
[x1 x2] = vad(x);
m = mfcc(x);
ref(i).mfcc= m(x1-2:x2-2,:);
ref(i).mfcc = m;
%计算平均语音长度,并求出于平均长度距离最近的语音序列
sum=0;%表示总距离
for i=1:2%取决于选取的声音的个数
length(i)=size(ref(i).mfcc,1);
sum=sum+length(i);
end
average=sum/2;
for i=1:2
tempdistance(i)=abs(ref(i).mfcc-average);%选取距离平均长度最近的语音为临时模板
end
%求得临时模板序列------此时求得临时模板序列为temp
template=ref(i).mfcc;
shortest=tempdistance(i);
for i=2:2
if tempdistance(i)< shorstest
shorstest=tempdistance(i);
template=ref(i).mfcc;
end
end
%把其他的语音向临时模板序列进行DTW规整
%经过调整后,所有的语音序列长度相等
for i=1:2
output(i)=dtw(ref(i).mfcc);
end
%把每帧的参数拿去求平均值
last=output(i);
for i=2:2
last=last+output(i);
end
final=last/2;
帮忙改下,谢谢