www.pudn.com > asr.rar > ENDPTDET.M, change:2004-11-06,size:3353b


%%%%%%%%%%%%%%%%%% 
%% endptdet.m   %% 
%%%%%%%%%%%%%%%%%% 
%% Determine if file type is matched%% 
if( isempty(Files) | (isempty(findstr(lower(CrntFile),'.wav')))) 
  msg=str2mat('Error Message: ',... 
              '  ',... 
              'Selected files are',... 
              'not in wav format.'); 
  set(cmthndl,'string',msg); 
  return; 
end 
%% Endpoint detection for a single 
%% wave file only 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
set(mfilehndl,'value',0); 
Mfflag=0; 
[sg,fs] = wavread(CrntFile); 
%erase the first 200 points, maybe the beginning includes interverence 
sg=sg(200:length(sg)); 
 
%% clear previous figures %% 
%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
set(FigNumber,'CurrentAxes',fig21); 
cla; 
set(fig21,'visible','off'); 
set(FigNumber,'CurrentAxes',fig22); 
cla; 
set(fig22,'visible','off'); 
set(FigNumber,'CurrentAxes',fig); 
cla; 
set(fig,'visible','on',... 
    'box','on'); 
 
%% Show message %% 
%%%%%%%%%%%%%%%%%% 
slashpos=findstr(CrntFile,'\'); 
name=CrntFile(slashpos(length(slashpos))+1:... 
              length(CrntFile)); 
msg=str2mat('Input Parameters:        ', ... 
            ' <fmrate   >  <not used >', ... 
            ' <winsize  >  <not used >',... 
            '                         ',... 
            ' SINGLE FILE PROCESSING  ',... 
           [' File Name: ',name]); 
set(cmthndl,'string',msg);  
crntmsg=msg; 
 
%% Set parameters %% 
%%%%%%%%%%%%%%%%%%%% 
fmrate=str2num(ip1); 
if(fmrate==0 | isempty(fmrate)) 
  fmrate=128; 
  set(ip1hndl,'string',num2str(128)); 
end 
winsize=str2num(ip2); 
if(winsize==0 | isempty(winsize)) 
  winsize=256; 
  set(ip2hndl,'string',num2str(256)); 
end 
set(ip3hndl,'String','xxxx'); 
set(ip4hndl,'String','xxxx'); 
 
 
%% Compute Endpoints %% 
%%%%%%%%%%%%%%%%%%%%%%% 
%endpoint.m detects continuous speech 
%[mag,zr,N1,N2]=endpoint(sg,fmrate,winsize);  
%% Display Results %% 
%%%%%%%%%%%%%%%%%%%%% 
%plot(sg); 
%hold on; 
%drange=max(sg)-min(sg); 
%for i=1:length(N1) 
%      y=min(sg):drange/9:max(sg); 
%      x1=N1(i)*ones(1,length(y)); 
%      x2=N2(i)*ones(1,length(y)); 
%      plot(x1,y,'g--'); 
%      plot(x2,y,'r--'); 
%end 
%hold off 
 
%% Save result if Saveflag = 1 %% 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
%no_of_endpts=length(N1); 
%if(Saveflag==1) 
% for i=1:no_of_endpts 
%   [outfile,outpath]=uiputfile('*.wav',... 
%       'Save A Speech Segment To A File'); 
%   if(outfile ~= 0) 
%     segment=sg(N1(i):N2(i)); 
%     outfile=strcat(outfile,'.wav');  
%     outfilename=[outpath outfile]; 
%     wavwrite(segment,fs,outfilename); 
%   end 
% end 
%end 
 
 
%% Compute Endpoints in single speech %% 
%% it is more accurrary. 
%%%%%%%%%%%%%%%%%%%%%%% 
[y,N1,N2] = pepEndPoint(sg,fmrate,winsize,0); 
%% Display Results %% 
%%%%%%%%%%%%%%%%%%%%% 
figure; 
plot(sg); 
hold on; 
drange=max(sg)-min(sg); 
d=min(sg):drange/9:max(sg); 
x1=N1*ones(1,length(d)); 
x2=N2*ones(1,length(d)); 
plot(x1,d,'g--'); 
plot(x2,d,'r--'); 
hold off 
 
%% Save result if Saveflag = 1 %% 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
if(Saveflag==1) 
%   [outfile,outpath]=uiputfile('*.wav',... 
%       'Save A Speech Segment To A File'); 
%   if(outfile ~= 0) 
%     outfile=strcat(outfile,'.wav');  
%     outfilename=[outpath outfile]; 
     outfile=strcat('pure_',Files);     
     outfilename=[Pathname outfile]; 
     wavwrite(y,fs,outfilename); 
     %end 
end 
 
return