newed1b.m

来自「这是一个用于语音信号处理的工具箱」· M 代码 · 共 214 行

M
214
字号
disp(' ');
disp('SCRIPT:   newed1b.m ***********************************************');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%	newed1b.m
%
%	2/22/94
%
% 	script to edit raw VUS_voicetype track by applying AI rules
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

	PLT = 1;		% flag to plot results

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

file_string = sprintf('temp/%s_Data.mat', name);
s=sprintf('loading ./%s from hard disk ...',file_string);
disp(s);
s=sprintf('load %s', file_string);
eval(s);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

MODS = 0;	% flag to indicate modifications have been made if nonzero

[m,n]=size(cofa);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% search for VUS pattern (primarily at end of vowels)
% note: V length must be very long

cnt = 1;
while(cnt~= 0),
[seg_cnt,seg_len,seg_type,seg_frame,seg_rang]=seg_fn1(VUS_voicetype,range);
% search for vus pattern
U_LEN_THRESH = 251;
V_LEN_THRESH = 1000;

L=length(seg_type);
cnt = 0;
	
for i=2:L-1,
	if(seg_type(i-1)=='v'&seg_type(i)=='u'&seg_type(i+1)=='s')
		% pattern found
		
		if(seg_len(i) < U_LEN_THRESH & seg_len(i-1) > V_LEN_THRESH)
			for j=seg_frame(i,1):seg_frame(i,2),
				VUS_voicetype(j) = 'v';
			end;
			MODS = MODS + 1;
			cnt = cnt + 1;
		end;
	end;
end;

s=sprintf('modifying any vus pattern with u length < %d', U_LEN_THRESH);
s1 = sprintf(' and v length > %d', V_LEN_THRESH );
s2=sprintf(' ... %d events', cnt);
s=[s s1 s2];
disp(s);
end;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% search for ?s? pattern 
% note: S length must be 2

cnt = 1;
while(cnt~= 0),
[seg_cnt,seg_len,seg_type,seg_frame,seg_rang]=seg_fn1(VUS_voicetype,range);
% search for ?s? pattern
S_LEN_THRESH = 101;

L=length(seg_type);
cnt = 0;
	
for i=2:L-1,
	if(seg_type(i)=='s')
		% pattern found
		
		if(seg_len(i) < S_LEN_THRESH )
			for j=seg_frame(i,1):seg_frame(i,2),
				VUS_voicetype(j) = seg_type(i-1);
			end;
			MODS = MODS + 1;
			cnt = cnt + 1;
		end;
	end;
end;

s=sprintf('modifying any ?s? pattern with s length < %d', S_LEN_THRESH);
s1=sprintf(' ... %d events', cnt);
s=[s s1 ];
disp(s);
end;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% search for suv pattern 
% note: U length must be small

cnt = 1;
while(cnt~= 0),
[seg_cnt,seg_len,seg_type,seg_frame,seg_rang]=seg_fn1(VUS_voicetype,range);
% search for suv pattern
U_LEN_THRESH = 75; 		

L=length(seg_type);
cnt = 0;
	
for i=2:L-1,
	if(seg_type(i)=='u' & seg_type(i-1)=='s' & seg_type(i+1)=='v')
		% pattern found
		
		if(seg_len(i) < U_LEN_THRESH )
			for j=seg_frame(i,1):seg_frame(i,2),
					VUS_voicetype(j) = seg_type(i+1);
			end;
			
			MODS = MODS + 1;
			cnt = cnt + 1;
		end;
	end;
end;

s=sprintf('modifying any suv pattern with u length < %d', U_LEN_THRESH);
s1=sprintf(' ... %d events', cnt);
s=[s s1 ];
disp(s);
end;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% search for ?u? pattern (except suv patterns)
% note: U length must be small

cnt = 1;
while(cnt~= 0),
[seg_cnt,seg_len,seg_type,seg_frame,seg_rang]=seg_fn1(VUS_voicetype,range);
% search for ?u? pattern
U_LEN_THRESH = 100; 		% changed 2/22/94 - old value 100
				% changed jmw 2/11/94 old value = 101;

L=length(seg_type);
cnt = 0;
	
for i=2:L-1,
	if(seg_type(i)=='u' & (seg_type(i-1)~='s' | seg_type(i+1)~='v'))
		% pattern found
		
		if(seg_len(i) < U_LEN_THRESH )
			if(seg_type(i-1) ~= 's')
				for j=seg_frame(i,1):seg_frame(i,2),
					VUS_voicetype(j) = seg_type(i-1);
				end;
			else
				for j=seg_frame(i,1):seg_frame(i,2),
					VUS_voicetype(j) = seg_type(i+1);
				end;
			end;
			MODS = MODS + 1;
			cnt = cnt + 1;
		end;
	end;
end;

s=sprintf('modifying any ?u? pattern (except suv) with u length < %d',...
		U_LEN_THRESH);
s1=sprintf(' ... %d events', cnt);
s=[s s1 ];
disp(s);
end;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% save modified VUS_voicetype in _Data file if required

if (MODS)
	s=sprintf('saving ./%s_Data.mat to disk ...',name); 
	disp(s);
 	s=sprintf('save temp/%s_Data.mat cofa power range residue voicetype VUS_voicetype',...
        name);
	eval(s);
end;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% clean up
	
clear L                   i                   s1                  
clear                     j                   s2                  
clear S_LEN_THRESH        m                   seg_cnt             
clear U_LEN_THRESH        n                   seg_frame           
clear VUS_voicetype                           seg_len             
clear V_LEN_THRESH        power               seg_rang            
clear cnt                 range               seg_type            
clear cofa                residue             voicetype           
clear file_string         s

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% go to next program if necessary and desired
if (MODS & PLT)
	clear MODS PLT
	seg3_3;		% call display program if there have been modifications
end;

clear MODS PLT

⌨️ 快捷键说明

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