THE AUDITORY MODELING TOOLBOX

Applies to version: 1.6.0

View the code

Go to function

ITDESTIMATOR
Estimate ITD from a binaural signal

Usage:

itd = itdestimator(sofa);
itd = itdestimator(sofa, method, ..);
[itd, toa, IACC] = itdestimator(..)
itd = itdestimator(signal, 'fs', fs, ..);

Input parameters:

sofa Impulse responses (IRs) as a SOFA structure using the SingleFreeFieldHRIR convention. The ITDs will be estimated for each IR in sofa.Data.IR.
signal Deprecated. Binaural signal. Size: (emitter x receiver x time). The ITDs between the two receivers will estimated, for each emitter separately.
fs Deprecated. Sampling rate (in Hz). Required, if signal provided. Ignored, if sofa provided.

Output parameters:

itd Interaural time difference (in s).
toa Detected time of arriving (in s). Size: (emitter x receiver).
IACC Interaural cross-correlation (IACC) coefficient Available only in methods 'MaxIACCr', 'MaxIACCe', 'CenIACCr', 'CenIACCe', 'CenIACC2e'.

Description:

itdestimator estimates the interaural time differences (ITDs) from a binaural signal. The estimation is done between the first receiver (i.e., the left ear) and the second receiver (i.e., the right ear). Several estimaton methods can be used:

'Threshold' Differences between the time each IR crosses a threshold below its peak. For more details, see Andreopoulou and Katz (2017). Default.
'Cen_e2' Time difference between the two centroids calculated on the envelopes. For more details, see Andreopoulou and Katz (2017).
'MaxIACCr' Delay of the peak of the IACC calculated on the raw IRs. For more details, see Andreopoulou and Katz (2017).
'MaxIACCe' Delay of the peak of the IACC calculated on the envelopes. For more details, see Andreopoulou and Katz (2017).
'CenIACCr' Delay of the centroid of the IACC calculated on the raw IRs. For more details, see Andreopoulou and Katz (2017).
'CenIACCe' Delay of the centroid of the IACC calculated on the envelopes. For more details, see Andreopoulou and Katz (2017).
'CenIACC2e' Delay of the centroid of the squared IACC calculated on the envelopes For more details, see Andreopoulou and Katz (2017).
'PhminXcor' Interaural difference between the TOAs each calculated as the delay of the peak of the cross correlation between the raw and minumum-phase version of the IR. For more details, see Andreopoulou and Katz (2017).
'IRGD' Time difference between the average group delays For more details, see Andreopoulou and Katz (2017).
'pausch2022' As 'MaxIACCr', but applied on badnpass-filtered and then 5-times upsampled IRs. For more details, see Pausch et al. (2022).

itdestimator also accepts the following optional flags:

'debug' Output more information about the calculations.
'lp' Use lowpass filtered IRs for the calculations. Default. Does not apply in 'pausch2022', which uses bandpass filtered IRs.
'bb' Do not apply any filtering to the IRs. Does not apply in 'pausch2022', which uses bandpass filtered IRs.
'fp' Applies to 'Threshold' only: Use findpeak() to find the peak in each IR.
'hp' Applies to 'Threshold' only: Use max() to find the peak in each IR. Default.

itdestimator also takes the following optional key-value pairs:

'threshlvl',thr Applies to 'Threshold' only: Threshold level (in dB). Default: -10 dB.
'butterpoly',n In 'pausch2022': The order of the band-pass Butterworth filter. In other methods: The order of the low-pass Butterworth filter. n must be between 2 and 10. Default is 10.
'upper_cutfreq',fu Applies to 'lp' only: Lowpass cutoff frequency (in Hz). Default: 3000 Hz.
'lower_cutfreq',fl Applies to 'IRGD' and 'paush2022' only: Highpass cutoff frequency (in Hz). Default: 1000 Hz.

Requirements:

SOFA Toolbox from http://sourceforge.net/projects/sofacoustics

Example:

This is an example of ITD calculation for an HRTF set:

Obj = amt_load('baumgartner2017','hrtf b_nh15.sofa');
toa_diff = itdestimator(Obj,'MaxIACCe','lp','upper_cutfreq',3000)

With these settings, the estimator uses the MaxIAACe method and applies a lowpass with a cutoff frequency of 3 kHz.

The output Obj is structured as in Obj.Data.IR input. To select, for example, only data on the horizontal plane data:

plane_idx = find( Obj.SourcePosition(:,2) == 0 );
plane_angle = Obj.SourcePosition(plane_idx,1);

References:

A. Andreopoulou and B. F. G. Katz. Identification of perceptually relevant methods of inter-aural time difference estimation. The Journal of the Acoustical Society of America, 142(2):588--598, 08 2017. [ DOI ]

F. Pausch, S. Doma, and J. Fels. Hybrid multi-harmonic model for the prediction of interaural time differences in individual behind-the-ear hearing-aid-related transfer functions. Acta Acust., 6:34, 2022. [ DOI ]