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