85 lines
2.4 KiB
Matlab
85 lines
2.4 KiB
Matlab
function crude_align( ref_logVAD, ref_Nsamples, deg_logVAD, ...
|
|
deg_Nsamples, Utt_id)
|
|
|
|
global Downsample
|
|
global Nutterances Largest_uttsize Nsurf_samples Crude_DelayEst
|
|
global Crude_DelayConf UttSearch_Start UttSearch_End Utt_DelayEst
|
|
global Utt_Delay Utt_DelayConf Utt_Start Utt_End
|
|
global MAXNUTTERANCES WHOLE_SIGNAL
|
|
global pesq_mos subj_mos cond_nr
|
|
|
|
if (Utt_id== WHOLE_SIGNAL )
|
|
nr = floor( ref_Nsamples/ Downsample);
|
|
nd = floor( deg_Nsamples/ Downsample);
|
|
startr= 1;
|
|
startd= 1;
|
|
elseif Utt_id== MAXNUTTERANCES
|
|
startr= UttSearch_Start(MAXNUTTERANCES);
|
|
startd= startr+ Utt_DelayEst(MAXNUTTERANCES)/ Downsample;
|
|
if ( startd< 0 )
|
|
startr= 1- Utt_DelayEst(MAXNUTTERANCES)/ Downsample;
|
|
startd= 1;
|
|
end
|
|
|
|
nr= UttSearch_End(MAXNUTTERANCES)- startr;
|
|
nd= nr;
|
|
|
|
if( startd+ nd> floor( deg_Nsamples/ Downsample) )
|
|
nd= floor( deg_Nsamples/ Downsample)- startd;
|
|
end
|
|
% fprintf( 'nr,nd is %d,%d\n', nr, nd);
|
|
|
|
else
|
|
startr= UttSearch_Start(Utt_id);
|
|
startd= startr+ Crude_DelayEst/ Downsample;
|
|
|
|
if ( startd< 0 )
|
|
startr= 1- Crude_DelayEst/ Downsample;
|
|
startd= 1;
|
|
end
|
|
|
|
nr= UttSearch_End(Utt_id)- startr;
|
|
nd = nr;
|
|
if( startd+ nd> floor( deg_Nsamples/ Downsample)+ 1)
|
|
nd = floor( deg_Nsamples/ Downsample)- startd+ 1;
|
|
end
|
|
end
|
|
|
|
max_Y= 0.0;
|
|
I_max_Y= nr;
|
|
if( (nr> 1) && (nd> 1) )
|
|
Y= FFTNXCorr( ref_logVAD, startr, nr, deg_logVAD, startd, nd);
|
|
[max_Y, I_max_Y]= max( Y);
|
|
if (max_Y<= 0)
|
|
max_Y= 0;
|
|
I_max_Y= nr;
|
|
end
|
|
end
|
|
|
|
% fprintf( 'max_Y, I_max_Y is %f, %d\n', max_Y, I_max_Y);
|
|
|
|
if( Utt_id== WHOLE_SIGNAL )
|
|
Crude_DelayEst= (I_max_Y- nr)* Downsample;
|
|
Crude_DelayConf= 0.0;
|
|
% fprintf( 1, 'I_max_Y, nr, Crude_DelayEst is %f, %f, %f\n', ...
|
|
% I_max_Y, nr, Crude_DelayEst);
|
|
elseif( Utt_id == MAXNUTTERANCES )
|
|
Utt_Delay(MAXNUTTERANCES)= (I_max_Y- nr)* Downsample+ ...
|
|
Utt_DelayEst(MAXNUTTERANCES);
|
|
% fprintf( 'startr, startd, nr, nd, I_max, Utt_Delay[%d] is %d, %d, %d, %d, %d, %d\n', ...
|
|
% MAXNUTTERANCES, startr, startd, nr, nd, ...
|
|
% I_max_Y, Utt_Delay(MAXNUTTERANCES) );
|
|
else
|
|
% fprintf( 'I_max_Y, nr is %d, %d\n', I_max_Y, nr);
|
|
Utt_DelayEst(Utt_id)= (I_max_Y- nr)* Downsample+ ...
|
|
Crude_DelayEst;
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|