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 + -
显示快捷键?