?? numberreader_better.m
字號:
function [] = NumberReader_Better( number )
root = 'D:\語音實驗\2006011340_左小龍';
labels_3 = load([root,'\data\31.mat']);
[wav_3 fs ]= wavread([root,'\data\31.wav']);
labels_6 = load([root,'\data\61.mat']);
[wav_6 fs ]= wavread([root,'\data\61.wav']);
labels_m = load([root,'\data\m1.mat']);
[wav_m fs ]= wavread([root,'\data\m1.wav']);
sound = [];
for i = 1:3:4
succ_3=0;
succ_6=0;
succ_m=0;
succ_3_2=0;
for j = 1:3:length(labels_3.label)-2%一定要連讀才行
if(number(i)==labels_3.label(j).syl&&number(i+1)==labels_3.label(j+1).syl&&number(i+2)==labels_3.label(j+2).syl)
ts = wav_3(labels_3.label(j).wave_begin:labels_3.label(j+2).wave_end);
sound=[sound;ts];
succ_3=1;
break;
end;
end;
if(succ_3==0)
for j = 1:length(labels_6.label)-2%在6個連讀中匹配三個連讀的情況
if(number(i)==labels_6.label(j).syl&&number(i+1)==labels_6.label(j+1).syl&&number(i+2)==labels_6.label(j+2).syl)
ts = wav_6(labels_6.label(j).wave_begin:labels_6.label(j+2).wave_end);
sound=[sound;ts];
succ_6=1;
break;
end;
if(mod(j+2,6)==0)
j=j+2;%如果j=4,則下一次匹配應跳到7、8、9位,而不能是5、6、7,因為6、7之間不是連讀
end;
end;
end;
if(succ_3==0&&succ_6==0)
for j = 1:length(labels_m.label)
if(number(i)==labels_m.label(j).syl&&number(i+1)==labels_m.label(j+1).syl&&number(i+2)==labels_m.label(j+2).syl)
ts = wav_m(labels_m.label(j).wave_begin:labels_m.label(j+2).wave_end);
sound=[sound;ts];
succ_m=1;
break;
end;
end;
end;
if(succ_3==0&&succ_6==0&&succ_m==0)
for j = 1:3:length(labels_3.label)-2
if(number(i)==labels_3.label(j).syl&&number(i+1)==labels_3.label(j+1).syl)
ts = wav_3(labels_3.label(j).wave_begin:labels_3.label(j+1).wave_end);
sound=[sound;ts];
for k=3:3:length(labels_3.label)
if(number(i+2)==labels_3.label(k).syl)
ts = wav_3(labels_3.label(k).wave_begin:labels_3.label(k).wave_end);
sound=[sound;ts];
break;
end;
end;
succ_3_2=1;
break;
end;
end;
end;
if(succ_3==0&&succ_6==0&&succ_m==0&&succ_3_2==0)
for j = 1:3:length(labels_3.label)-2
if(number(i)==labels_3.label(j).syl)
ts = wav_3(labels_3.label(j).wave_begin:labels_3.label(j).wave_end);
sound=[sound;ts];
break;
end;
end;
for j = 2:3:length(labels_3.label)-1
if(number(i+1)==labels_3.label(j).syl)
ts = wav_3(labels_3.label(j).wave_begin:labels_3.label(j).wave_end);
sound=[sound;ts];
break;
end;
end;
for j = 3:3:length(labels_3.label)
if(number(i+2)==labels_3.label(j).syl)
ts = wav_3(labels_3.label(j).wave_begin:labels_3.label(j).wave_end);
sound=[sound;ts];
break;
end;
end;
end;
end;
wavplay(sound,fs);
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -