turnoise.m

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

M
172
字号
% generate unvoiced source data, i.e., turbulence noise source
% gen_exgltu(sp, timex)
	
%	smpfrq = 20000;
%	TNCRN = 27;
%	TNturbg = 20;

[minarea,inlet]=min(area(vfno,60:-1:1));
inlet=61-inlet;
outlet=inlet+1;


clear Uvvn;

if TN_place(sfno)==1

%	case 1:	/* At the Center of the Maximal Constriction */
		tnnum = 1;
		Uvvn = zeros(tnnum);
		mod2 = rem(outlet-inlet,2);
	if (mod2) 
		tnloc = ceil((inlet+outlet)/2.0) + 1;
		Uvvc = Uv(tnloc);
%		Uvvn(1) = turbonoise(sp, Uvvc);
%function [Uturbn]=turnoise(Uvvc,smpfrq)
% turbulence noise generation


		Fg = 500.0;  %Uvvca = 0.0;
		rho = 1.14e-3;
		mu = 1.86e-4;
		Coef = 2*pi*Fg/smpfrq;
		Uvvca = Uvvca + (Uvvc - Uvvca)*Coef;
		Reynum = 4.0*rho*rho*Uvvca*Uvvca/(pi*mu*mu*minarea*minarea);
		Rturbon = 0.5*rho*abs(Uvvca)/(minarea*minarea);
		randnumber = rand(1)-0.5;
		gennoise = Reynum - (TN_CRN(sfno)*100.0);
		if (gennoise > 0.0)
			Ppn = TN_turbg(sfno)*0.0000001*gennoise*randnumber;
			Uturbn = Ppn/Rturbon;
		else
			Uturbn = 0.0;
		end
		Uvvn(1) = Uturbn;

	else
		tnloc = (inlet + outlet ) / 2 + 1;
		Uvvc = Uv(tnloc);
%		Uvvn(1) = turbonoise(sp, Uvvc);
%function [Uturbn]=turnoise(Uvvc,smpfrq)
% turbulence noise generation


		Fg = 500.0;  %Uvvca = 0.0;
		rho = 1.14e-3;
		mu = 1.86e-4;
		Coef = 2*pi*Fg/smpfrq;
		Uvvca = Uvvca + (Uvvc - Uvvca)*Coef;
		Reynum = 4.0*rho*rho*Uvvca*Uvvca/(pi*mu*mu*minarea*minarea);
		Rturbon = 0.5*rho*abs(Uvvca)/(minarea*minarea);
		randnumber = rand(1)-0.5;
		gennoise = Reynum - (TN_CRN(sfno)*100.0);
		if (gennoise > 0.0)
			Ppn = TN_turbg(sfno)*0.0000001*gennoise*randnumber;
			Uturbn = Ppn/Rturbon;
		else
			Uturbn = 0.0;
		end
		Uvvn(1) = Uturbn;
	end


elseif TN_place(sfno)==2

%	case 2: /* Downstream from the Maximal Constriction  */
		tnnum = 1;
		tnloc = outlet + 3;
		Uvvn = zeros(tnnum);
		Uvvc = Uv(tnloc);
%		Uvvn(1) = turbonoise(sp, Uvvc);
%function [Uturbn]=turnoise(Uvvc,smpfrq)
% turbulence noise generation


	Fg = 500.0;  %Uvvca = 0.0;

	rho = 1.14e-3;
	mu = 1.86e-4;
	Coef = 2*pi*Fg/smpfrq;
	Uvvca = Uvvca + (Uvvc - Uvvca)*Coef;
	Reynum = 4.0*rho*rho*Uvvca*Uvvca/(pi*mu*mu*minarea*minarea);
	Rturbon = 0.5*rho*abs(Uvvca)/(minarea*minarea);
	randnumber = rand(1)-0.5;
	gennoise = Reynum - (TN_CRN(sfno)*100.0);
	if (gennoise > 0.0)
		Ppn = TN_turbg(sfno)*0.0000001*gennoise*randnumber;
		Uturbn = Ppn/Rturbon;
	else
		Uturbn = 0.0;
	end
	Uvvn(1) = Uturbn;


elseif TN_place(sfno)==3

%	case 3: /* Upstream from the Maximal Constriction    */

		tnnum = 1;
		tnloc = inlet + 1;
		Uvvn = zeros(tnnum);
		Uvvc = Uv(tnloc);
%		Uvvn(1) = turbonoise(sp, Uvvc);
%function [Uturbn]=turnoise(Uvvc,smpfrq)
% turbulence noise generation


	Fg = 500.0;  %Uvvca = 0.0;

	rho = 1.14e-3;
	mu = 1.86e-4;
	Coef = 2*pi*Fg/smpfrq;
	Uvvca = Uvvca + (Uvvc - Uvvca)*Coef;
	Reynum = 4.0*rho*rho*Uvvca*Uvvca/(pi*mu*mu*minarea*minarea);
	Rturbon = 0.5*rho*abs(Uvvca)/(minarea*minarea);
	randnumber = rand(1)-0.5;
	gennoise = Reynum - (TN_CRN(sfno)*100.0);
	if (gennoise > 0.0)
		Ppn = TN_turbg(sfno)*0.0000001*gennoise*randnumber;
		Uturbn = Ppn/Rturbon;
	else
		Uturbn = 0.0;
	end
	Uvvn(1) = Uturbn;


elseif TN_place(sfno)==4

%	case 4: /* Distributed along the Constriction Region */

	tnnum = outlet - inlet + 1;
	tnloc = inlet + 1;
	Uvvn = zeros(tnnum);
	for k=inlet:outlet,
		Uvvc = Uv(k+1);
%		Uvvn(k+1-inlet) = turbonoise(sp, Uvvc);
%	function [Uturbn]=turnoise(Uvvc,smpfrq)
% turbulence noise generation

		Fg = 500.0;  %Uvvca = 0.0;
		rho = 1.14e-3;
		mu = 1.86e-4;
		Coef = 2*pi*Fg/smpfrq;
		Uvvca = Uvvca + (Uvvc - Uvvca)*Coef;
		Reynum = 4.0*rho*rho*Uvvca*Uvvca/(pi*mu*mu*minarea*minarea);
		Rturbon = 0.5*rho*abs(Uvvca)/(minarea*minarea);
		randnumber = rand(1)-0.5;
		gennoise = Reynum - (TN_CRN(sfno)*100.0);
		if (gennoise > 0.0)
			Ppn = TN_turbg(sfno)*0.0000001*gennoise*randnumber;
			Uturbn = Ppn/Rturbon;
		else
			Uturbn = 0.0;
		end
		Uvvn(k+1-inlet) = Uturbn;
	end
end


	


⌨️ 快捷键说明

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