addsil3a.m

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

M
127
字号
disp(' ');
disp('SCRIPT: addsil3a.m ***********************************************');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%	addsil3a.m
%
%	jmw
%
%	7/27/94
%
%	called by ww3_update.m
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% create additional silent segment parameter(s)

sil_frames = round(sil_length / 50);

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

% is silstart at segment boundary or not?

x= find( silstart == tmp_seg_range(:,1) );
if (isempty(x))
	% sil start is NOT a segment start point
	disp('sil start is NOT a segment start point');
else
	% sil start IS a segment start point
	disp('sil start IS a segment start point');
	
	% process Data tmp variables %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

	[mi,ni]=find(silstart == tmp_range); % mi is insertion frame index
	
	% do tmp range

	for j=m:-1:mi,
		tmp_range(j+sil_frames,1)=tmp_range(j,1)+ sil_length;
		tmp_range(j+sil_frames,2)=tmp_range(j,2)+ sil_length;
	end;

	for j=mi+1:mi+sil_frames-1,
		tmp_range(j,1) = tmp_range(j-1,1)+50;
		tmp_range(j,2) = tmp_range(j,1) + 49;
	end;
	tmp_range(mi,2) = tmp_range(mi,1) + 49;

	% do tmp cofa

	for j=m:-1:mi,
		tmp_cofa(j+sil_frames,:)=tmp_cofa(j,:);
	end;

	% do tmp residue

	NNN = length(tmp_residue);
	tmp_residue(silstart+sil_length:NNN+sil_length) = ...
		tmp_residue(silstart:NNN);
	tmp_residue(silstart:silstart+sil_length-1) = rand(1,sil_length)-0.5;
	
	% do tmp VUS_voicetype

	for j=m:-1:mi,
		tmp_VUS_voicetype(j+sil_frames)=tmp_VUS_voicetype(j);
	end;
	for j=mi:mi+sil_frames-1,
		tmp_VUS_voicetype(j) = 's';
	end;

	% process tmp signal variable %%%%%%%%%%%%%%%%%%%%%%%%%%%%

	NNN = length(tmp_signal);
	tmp_signal(silstart+sil_length:NNN+sil_length) = ...
		tmp_signal(silstart:NNN);
	tmp_signal(silstart:silstart+sil_length-1) = rand(1,sil_length)-0.5;

	% process SegNLabels tmp variables %%%%%%%%%%%%%%%%%%%%%%%%%%%%

	tmp_seg_cnt = tmp_seg_cnt + 1;	% add another segment

	% do seg range
	
	for j=tmp_seg_cnt:-1:(x+1),
		tmp_seg_range(j,:)=tmp_seg_range(j-1,:)+[sil_length sil_length];
	end;
	tmp_seg_range(x,2)=tmp_seg_range(x,1) + sil_length -1;
	
	% do choice_1 & choice_2
	for j=tmp_seg_cnt:-1:(x+1),
		tmp_choice_1(j,:) = tmp_choice_1(j-1,:);
		tmp_choice_2(j,:) = tmp_choice_2(j-1,:);
	end;
	tmp_choice_1(x,:)= '   silent';
	tmp_choice_2(x,:)= '   silent';

	% do reliability_1 & reliability_2

	for j=tmp_seg_cnt:-1:(x+1),
		tmp_reliability_1(j) = tmp_reliability_1(j-1);
		tmp_reliability_2(j) = tmp_reliability_2(j-1);
	end;
	tmp_reliability_1(x)= 1.00;
	tmp_reliability_2(x)= 1.00;

	% do seg frame
	
	for j=tmp_seg_cnt:-1:(x+1),
	   tmp_seg_frame(j,:) = tmp_seg_frame(j-1,:)+ [sil_frames sil_frames];	
	end;
	tmp_seg_frame(x,2) = tmp_seg_frame(x,1) + sil_frames - 1;

	% do seg type
	
	for j=tmp_seg_cnt:-1:(x+1),
		tmp_seg_type(j) = tmp_seg_type(j-1);	
	end;

	tmp_seg_type(x) = 's';	
end;

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

% call display refresh program ...

m2_d1_di;

⌨️ 快捷键说明

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