gen_src.m
来自「这是一个用于语音信号处理的工具箱」· M 代码 · 共 95 行
M
95 行
% gen_src.m
% ****************** FUNCTION and VARIABLE DECLARATIONS *****************
% UNITY_CNST=14.49198910817;
% NUM_NOISE_TRMS=16;
% INTG(A,B,C) (A + (C*B))
% NO=0;
% Main function for source waveform generation.
% int gen_syn_src()
%FG_f0=99;FG_t0=101;FG_av=60;FG_g0=1;JS_jit=60;JS_jfilt=0;JS_shm=60;JS_sfilt=0;
%LF_ee=60;LF_tp=41;LF_te=55;LF_tc=58;LF_ta=4;An_ah=60;An_afilt=0;exc_inc_value=0;
%sftime=0;sfdur=1;
% float fbegt, fdurt, fendt, ftimep, ftimestep;
% int sampf, value;
sfno;
samp_rate = 10000.0;
value = jsaspsg(sfno); % refer to excapply.m %
% LF_set = (LF_par *)get_LFpar(); /* get parameters from slider panels */
% FG_set = (FG *)get_FGpar();
% if (value & 01)
% JS_set = (JS *)get_JSpar();
% if ((value >> 1) & 01)
% An_set = (Aspi *)get_aspi();
% else {
% free(noisesamp);
% noisesamp = (double *)NULL;
% }
fend(sfno) = ftime(sfno) + fdur(sfno);
% if (fdurt <= 0) {
% ftime_notice();
% return;
% }
if (value==1 | value==3 | value==5 | value==7)
% generate amplitude(av) perturbation first
pert_para_av=gen_shim(FG_f0(sfno),FG_t0(sfno),FG_av(sfno),FG_g0(sfno),JS_jit(sfno),JS_jfilt(sfno),JS_shm(sfno),JS_sfilt(sfno));
% generate pitch(T0, actually F0) perturbation
pert_para_f0=gen_jitt(FG_f0(sfno),FG_t0(sfno),FG_av(sfno),FG_g0(sfno),JS_jit(sfno),JS_jfilt(sfno),JS_shm(sfno),JS_sfilt(sfno));
else
pert_para_av = FG_av(sfno);
pert_para_f0 = 10000.0/FG_t0(sfno);
end
% generate voicing source by LF model
sampf = round(samp_rate/pert_para_f0);
clear pulsesamp dpulsesamp noisesamp sourcesamp sourcepsd;
if (exist('pulsesamp') == 0)
pulsesamp = zeros(1,sampf);
end
if (exist('dpulsesamp') == 0)
dpulsesamp = zeros(1,sampf);
end
if (exist('noisesamp') == 0)
noisesamp = zeros(1,sampf);
end
if (exist('sourcesamp') == 0)
sourcesamp = zeros(1,sampf);
end
[pulsesamp,dpulsesamp]=genlfsrc(LF_ee(sfno),LF_tp(sfno),LF_te(sfno),...
LF_tc(sfno),LF_ta(sfno),sampf);
% generate aspiration noise
if (value==2 | value==3 | value==6 | value==7)
noisesamp=gen_aspi(An_ah(sfno), An_afilt(sfno), sampf);
end
% Generate the actual source excitation by combining additional gain and
% include subglottal and source-tract interaction.
for j=1:sampf,
pulsesamp(j) = pulsesamp(j)*pert_para_av;
sourcesamp(j) = (noisesamp(j) + pulsesamp(j)) * FG_g0(sfno);
end
% return(sampf);
sourcepsd=fftpsd(sourcesamp,sampf);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?