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