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

📄 testsave.asv

📁 实现语音波形的显示、波形放大及缩小(双击鼠标实现)
💻 ASV
字号:
  function testsave(ud)

    %[ud.fname, ud.pname] = uigetfile('*.wav')
    % ud.wave  wave data
    %ud.wave = readwav([ud.pname,ud.fname], 'r');
    %ud.x1 = fix(length(ud.wave) * 0.1);
    %ud.x2 = fix(length(ud.wave) * 0.9);
  
     x = inputdlg('Please input the number:')
     if isempty(x) 
        return
     end
     y = inputdlg('Please input its order:')
     if isempty(y) 
        return
     end
     x = char(x);
     y = char(y);
     
     fname1 = [ud.fname(1: findstr(ud.fname,'.wav')-1),'_',x,y];
     pname1 = 'E:\应用软件\matlab6\work\标准数据库\原始语音数据\龚剑耀\';
     fid1 =  writewav(ud.wave(ud.x1 : ud.x2),8000,[pname1,'不定长单数字\',x,'\', fname1, '_n.wav'], '16', 'r')
           
     [c1,pnum] = melcepst(ud.wave(ud.x1 : ud.x2),8000,'Mpt',16,24,256,64,0,0.5);
     fidMel = fopen([pname1,'Mel不定长单数字\',x,'\','Pointset_SphMel',fname1,'_n_',num2str(pnum),'.h32'],'w')
     if fidMel<0
          warndlg('can''t open  Pointset_SphMel...n.h32','warn')
          return
     end
           
     fprintf('ud.x2-ud.x1 = %g',ud.x2-ud.x1)
     %     fprintf('c1(1:36)= %d',c1(1:36))
           
     count = fwrite(fidMel,c1,'float32')
          
     if count<10
            warndlg('can''t write  Pointset_SphMel...n.h32','warn')
            return
     end
     fclose(fidMel)
           
     pname1 = 'E:\应用软件\matlab6\work\标准数据库\原始语音数据\龚剑耀\'
     if ud.x2 - ud.x1 >= 2239  
               a = ud.wave(ud.x1 : ud.x1+2239);
               fprintf('size(a) = %d',size(a))
     else
               a = ud.wave(ud.x1:ud.x2)
               a(ud.x2-ud.x1+2 : 2240) = 0
               fprintf('size(a) = %d',size(a))
     end
           fid2 =  writewav(a,8000,[pname1,'定长2240单数字\',x,'\', fname1,'_e.wav'], '16', 'r');
           [c1,pnum]=melcepst(a,8000,'Mpt',16,24,256,64,0,0.5);  
           fprintf('c1(1:36)= %d',c1(1:36))
           fidMel = fopen([pname1,'Mel定长2240单数字\',x,'\','Pointset_SphMel',fname1,'_e_',num2str(pnum),'.h32'],'w')
                
           if fidMel<0
               warndlg('can''t open  Pointset_SphMel...n.h32','warn')
               return
           end
           count = fwrite(fidMel,c1,'float32')
           if count<10
               warndlg('can''t write  Pointset_SphMel...n.h32','warn')
               return
           end
           fclose(fidMel);
           
    end
                   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -