seg3_3st.m
来自「这是一个用于语音信号处理的工具箱」· M 代码 · 共 142 行
M
142 行
disp(' ');
disp('SCRIPT: seg3_3st.m ***********************************************');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% SEG3_3ST.M
%
% script to assemble segments from VUS data only
%
% This program is the same as seg3_3.m except that here the
% results ARE saved as well as possibly displayed
%
% jmw
%
% 2/14/94
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
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);
file_string = sprintf('temp/%s.mat', name);
s=sprintf('loading ./%s from hard disk ...',file_string);
disp(s);
s=sprintf('load %s', file_string);
eval(s);
signal = eval(name);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% segmenting routine ...
seg_cnt = 1; % segment counter
seg_type(seg_cnt) = VUS_voicetype(1);
seg_range(1,1)=range(1,1); % startpoint of first segment = 1
seg_frame(1,1) = 1;
for i = 2:length(VUS_voicetype),
if VUS_voicetype(i) == VUS_voicetype(i-1)
% still in same segment
seg_range(seg_cnt,2) = range(i,2);
seg_frame(seg_cnt,2) = i;
else
% beginning of new segment
seg_range(seg_cnt,2) = range(i-1,2); % save end pt of prev seg.
seg_frame(seg_cnt,2) = i-1;
seg_cnt = seg_cnt + 1;
seg_type(seg_cnt) = VUS_voicetype(i);
seg_range(seg_cnt,1) = range(i,1);
seg_frame(seg_cnt,1) = i;
end
end;
% create vector to store segment lengths
seg_len=seg_range(:,2) - seg_range(:,1) + 1;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% plot results
disp('plotting results ...');
h=gcf;
figure(h);
clf;
subplot(211);
plot(signal);
grid;
axis_1=axis;
axis(axis_1);
s=sprintf('%s', name);
title(s);
% next graph ...
VOICED = 2.0;
UNVOICED = 1.0;
SILENT = 0.0;
subplot(212);
for i=1:length(voicetype),
if VUS_voicetype(i) == 'v'
vt(i) = VOICED;
elseif VUS_voicetype(i) == 'u'
vt(i) = UNVOICED;
elseif VUS_voicetype(i) == 's'
vt(i) = SILENT;
end;
end;
stairs(range(:,1), vt);
axis([axis_1(1) axis_1(2) -1 3]);
grid;
s=sprintf('V/U/S voicetype');
title(s);
% add segment lengths to graph
for i=1:seg_cnt,
s=sprintf('%d',seg_len(i));
if seg_type(i) == 's'
y = -0.5;
elseif seg_type(i) == 'u'
y = 1.25;
else
y=2.6;
end;
text(round(seg_range(i,1) + 0.4*seg_len(i)),y,s);
end;
drawnow;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% save data
file_string=sprintf('%s_Segdata', name);
s=sprintf('saving ./%s.mat to hard disk ...',file_string);
disp(s);
s=sprintf('save temp/%s seg_cnt seg_frame seg_len seg_range seg_type', file_string);
eval(s);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% clean up time
clear h seg_len
clear SILENT i seg_range
clear UNVOICED seg_type
clear VOICED power signal
clear VUS_voicetype range voicetype
clear axis_1 residue vt
clear bond_CH s y
clear cofa seg_cnt
clear file_string seg_frame
s=sprintf('clear %s', name);
eval(s);
clear s;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?