clarity.evaluator.msbg.cochlea module

Gammatone filterbank simulation of the Cochlea.

class clarity.evaluator.msbg.cochlea.Cochlea(audiogram: Audiogram, catch_up_level: float = 105.0, fs: float = 44100.0)[source]

Bases: object

Simulate the cochlea.

Includes simulation of effects of bandwidth broadening (smearing) and recruitment. Implements 3 different degrees of impairment which affect the degree of smearing. Recruitment currently always with x2 broadening.

Degree of hearing impairment used to control the following filterbank variables: BROADEN, SPACING, NGAMMA, Fs, N_Chans, ERBn_CentFrq, GTn_CentFrq, GTnDelays, GTn_denoms, GTn_nums, Start2PoleHP, HP_FCorner, HP_denoms, HP_nums, HP_Delays, Recombination_dB

simulate(coch_sig: ndarray, equiv_0dB_file_SPL: float) ndarray[source]

Pass a signal through the cochlea.

Parameters:
  • coch_sig (ndarray) – input signal

  • equiv_0dB_file_SPL (float) – equivalent level in dB SPL of 0 dB Full Scale

Returns:

cochlear output signal

Return type:

ndarray

class clarity.evaluator.msbg.cochlea.FilterBank(nums: ndarray, denoms: ndarray)[source]

Bases: object

Holds the numerators and denominators of an IIR filter bank.

denoms: ndarray
nums: ndarray
clarity.evaluator.msbg.cochlea.compute_envelope(coch_sig: ndarray, erbn_cf: ndarray, fs: float) ndarray[source]

Obtain signal envelope.

Envelope computed using full-wave rectification and low-pass filter

Parameters:
  • coch_sig (ndarray) – input signal

  • erbn_cf (ndarray) – ERB centre frequencies

  • fs (float) – sampling frequency

Returns:

signal envelope

Return type:

ndarray

clarity.evaluator.msbg.cochlea.compute_recruitment_parameters(gtn_cf: ndarray, audiogram: Audiogram, catch_up: float) tuple[ndarray, ndarray][source]

Compute parameters to be used in recruitment model.

Computes expansion ratios for each gammatone filterbank channel and the equal loudness catch up level per channel (currently this is a fixed value per channel)

Parameters:
  • gtn_cf (ndarray) – gammatone filterbank centre frequencies

  • audiogram (Audiogram) – the audiogram to employ

  • catch_up (float) – level in dB at which catches up with NH

Returns:

expansion ratio for each gammatone filterbank channel

Return type:

ndarray

clarity.evaluator.msbg.cochlea.gammatone_filterbank(x: ndarray, ngamma: int, gtn_filters: FilterBank, gtn_delays: ndarray, start2poleHP: int, hp_filters: FilterBank) ndarray[source]

Pass signal through gammatone filterbank.

Parameters:
  • x (ndarray) – input signal

  • ngamma (int) – 4, gammatone order

  • gtn_filters (FilterBank) – set of gammatone filters

  • gtn_delays (ndarray) – gammatone filter delays

  • start2poleHP (int) – parameter value from gtfbank_file

  • hp_filter (FilterBarker) – set of highpass filters

Returns:

cochleagram with gtn_denoms.shape[0] channels of len(x)

Return type:

ndarray

clarity.evaluator.msbg.cochlea.recruitment(coch_sig: ndarray, envelope: ndarray, SPL_equiv_0dB: int | float, expansion_ratios: ndarray, eq_loud_db: ndarray) ndarray[source]

Simulate loudness recruitment.

Parameters:
  • coch_sig (ndarray) – input signal

  • envelope (ndarray) – signal envelope

  • SPL_equiv_0dB (float) – equivalent level in dB SPL of 0 dB Full Scale

  • expansion_ratios (ndarray) – expansion ratios for expanding channel signals

  • eq_loud_db (ndarray) – loudness catch-up level in dB

Returns:

cochlear output signal

Return type:

ndarray