for i=1:10
fname = sprintf('..\\录音\\%da.wav',i-1);%备注:该部分就是您要录制的语音样本(0-9的数字录音)该例程中用了20个.wav格式的录音:0a.wav,1a.wav....,9a.wav,0b.wav,1b.wav......,9b.wav,分别保存了0到9的发音前10个用于参考训练,后10个作为测试。
x = wavread(frame);
[x1 x2] = vad(x);
m = mfcc(x);
m = m(x1-2:x2-2,:);
ref(i).mfcc = m;
end
disp('正在计算测试模板的参数...')
for i=1:10
fname = sprintf('..\\录音\\%db.wav',i-1);
x = wavread(frame);
[x1 x2] = vad(x);
m = mfcc(x);
m = m(x1-2:x2-2,:);
test(i).mfcc = m;
end
disp('正在进行模板匹配...')
dist = zeros(10,10);
for i=1:10
for j=1:10
dist(i,j) = dtw(test(i).mfcc, ref(j).mfcc);
end
end
disp('正在计算匹配结果...')
for i=1:10
[d,j] = min(dist(i,:));
fprintf('测试模板 %d 的识别结果为:%d\n', i, j);
end
错误显示为??? Error using ==> wavread at 67
Cannot open file.
当我把fname = sprintf('..\\录音\\%da.wav',i-1);注释掉,下一句改为x = wavread('0a.wav');就可以识别0这个数字,可是我想识别0-9这十个数字,要怎么改呢
求指教啊!!!
3 个解决方案
#1
在这句fname = sprintf(下面加一句
disp(fname)
把文件名打印到控制台看看,无法打开文件应该是你sprintf弄过去的文件名不对劲,找不到文件所致
试着去掉最前面的..看看
0a.wav是直接在当前路径下找,你确定你的*.wav在 \录音\这个文件夹下吗?还是都在当前文件夹?
disp(fname)
把文件名打印到控制台看看,无法打开文件应该是你sprintf弄过去的文件名不对劲,找不到文件所致
试着去掉最前面的..看看
0a.wav是直接在当前路径下找,你确定你的*.wav在 \录音\这个文件夹下吗?还是都在当前文件夹?
#2
可以了,我将寻找路径设为绝对路径,选择好文件夹就可以了
#3
请问大侠怎么设置成绝对路径呢?我也是这个程序,做的说话人识别,
#1
在这句fname = sprintf(下面加一句
disp(fname)
把文件名打印到控制台看看,无法打开文件应该是你sprintf弄过去的文件名不对劲,找不到文件所致
试着去掉最前面的..看看
0a.wav是直接在当前路径下找,你确定你的*.wav在 \录音\这个文件夹下吗?还是都在当前文件夹?
disp(fname)
把文件名打印到控制台看看,无法打开文件应该是你sprintf弄过去的文件名不对劲,找不到文件所致
试着去掉最前面的..看看
0a.wav是直接在当前路径下找,你确定你的*.wav在 \录音\这个文件夹下吗?还是都在当前文件夹?
#2
可以了,我将寻找路径设为绝对路径,选择好文件夹就可以了
#3
请问大侠怎么设置成绝对路径呢?我也是这个程序,做的说话人识别,