Rowan-Classes/6th-Semester-Spring-2024/DSP/Labs/FinalProject/obj_evaluation/crude_align.m
2024-04-25 18:38:09 -04:00

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