matlab DTW语音识别算法调试

系统 1918 0

下载地址: http://download.csdn.net/detail/fzxy002763/4082023

算法不是原创的,由于网上流传版本很多,不过都是独立给出一些m文件,不完整,故笔者整理了一下,调试通过,方便大家学习下dtw算法。

其中dtw_test是测试文件,其他皆为function文件

    disp('正在计算参考模板的参数...')
for i=1:5
	fname = sprintf('%da.wav',i);
	x=fname;
    [x,fs]=wavread(x);
	[x1 x2] = vad(x);
	m = mfcc(x);
	m = m(x1-2:x2-2,:);
	ref(i).mfcc = m;
   % soundview(x);
end

disp('正在计算测试模板的参数...')
for i=1:1
    %[x,fs]=wavread('E:\\3.wav')
	fname = sprintf('%db.wav',i);
	x=fname;
    [x,fs]=wavread(x);    
	[x1 x2] = vad(x);
	m = mfcc(x);
	m = m(x1-2:x2-2,:);
	test(i).mfcc = m;
end

disp('正在进行模板匹配...')
dist = zeros(1,5);
for i=1:1
for j=1:5
	dist(i,j) = dtw(test(i).mfcc, ref(j).mfcc);
end
end

disp('正在计算匹配结果...')
for i=1:1
	[d,j] = min(dist(i,:));
	fprintf('测试模板 %d 的识别结果为:%d\n', i, j);
end

  
略微改动了下原版,这里两次循环,第一次1~5,主要检索模板,计算梅尔倒普系数等一些声纹特征,然后在第二次循环中进行模板匹配的计算。这里文件命名原则是%da,如1a,1b,测试结果显示为“测试模板%d的识别结果为x”,即意义是哪一个wav文件匹配哪一个文件,如程序测试结果为:

1.vad

matlab DTW语音识别算法调试

2.识别

matlab DTW语音识别算法调试

故是4a.wav匹配1b.wav,可以自行设定理解,PS: 录音最好时间差不多,且大于1S,要不然可能会报index exceeds matrix dimensions这种错误。

matlab DTW语音识别算法调试


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论