⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 numberreader_better.m

📁 线性方程组求根实验
💻 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 + -