seg3_3.m
来自「这是一个用于语音信号处理的工具箱」· M 代码 · 共 166 行
M
166 行
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% seg3_3.m
%
% script to ONLY DISPLAY segments
%
% jmw
%
% 2/14/94
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
disp(' ');
disp('SCRIPT: seg3_3.m ***********************************************');
disp('This program only displays segment data. It does not save 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);
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;
% plotting routine
%clf;
% Set position and size of analysis window
PV=[275 50 519 475];
s2 = 'Signal and analysis results';
% Open analysis window
while exist('signal_gci_win_h')==1
try1 = 'get(signal_gci_win_h,''position'');';
eval(try1,catch2);
if check ==0
clear signal_gci_win_h;
check = 1;
break;
end
s1 = get(signal_gci_win_h,'Name');
if ~strcmp(s1,s2)
clear signal_gci_win_h;
break;
end
figure(signal_gci_win_h);
break;
end;
if exist('signal_gci_win_h')~=1;
signal_gci_win_h=figure('Position',PV,...
'Resize','on',...
'Numbertitle','off',...
'Name',s2);
end
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;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 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 + -
显示快捷键?