Skip to content

Repository files navigation

qCLS

qCLS is a categorical-loudness-scaling (CLS) test that was designed to efficiently measure loudness growth over a wide range of frequencies.

Installation

  • A complete set of test materials (in a folder hierarchy) is available for download either as a compressed archive or a GitHub repository.
  • This software is written in MATLAB code and has been tested on a PC under Windows 11 running MATLAB version 2021a.
  • qCLS test materials are being distributed under a creative commons license (BY-NC-SA).

Conditioning the prior on an audiogram

By default the tracker starts every listener from the same prior, [40 90 110] +/- 10 dB at every frequency, which is identical for normal hearing and for a 70 dB loss. An audiogram is usually measured before loudness scaling begins, so ignoring it discards the best information available at no cost.

par = qCLS_setup(thr, 'hl');                            % conditioned prior
par = qCLS_setup(thr, 'hl', 'transducer', 'er3a');      % naming the transducer
par = qCLS_setup();                                     % unchanged, as qCLS_config

thr is 1x10 thresholds at 250, 500, 750, 1000, 1500, 2000, 3000, 4000, 6000 and 8000 Hz, with NaN where a frequency was not measured. A missing frequency falls back to that band's population distribution rather than to a guess, and an empty audiogram reproduces qCLS_config exactly.

Worth 0.396 dB, SE 0.116, t = 3.4, on 148 listeners replaying recorded responses, and better in 89 of them.

Units and transducer are not formalities

The regressions in cls_prior_hyper.mat were fitted against thresholds in dB SPL, so dB HL has to have the RETSPL added, and which RETSPL depends on the transducer. On one audiogram the CU 5 prior at 250 Hz lands at 67.9 dB SPL under the legacy table and 58.2 under ER-3A inserts, 9.7 dB apart, at the frequency where the prior is most sensitive to threshold.

Neither mistake fails loudly. units therefore has no default, and an unrecognized transducer name raises rather than falling back. Available: legacy (the default) and er3a.

Only tables measured at BTNRH are offered. er3a is the table in clspf_demo.m and plot_cb.m. Published figures for TDH-39, TDH-49/50 and HDA200 were removed after the ER-3A row taken from that same source proved 3.5 dB low at 250 Hz rising to 15.5 dB at 8 kHz against the measured values. legacy is not ER-3A; it may be the Sennheiser HD 280 Pro circumaural headphone also used here, but that is unconfirmed. The same tables appear in qcls_core.c of neeste/qCLS-web; correcting one copy without the other makes the two implementations disagree.

Reading the result

[mu, V, muMAP] = qcls.report();     % mixture over anchor-frequency models
est = qCLS_estimate(struct('qcls', qcls));

The tracker carries a discrete posterior over 21 anchor-frequency subsets. report averages over them rather than reading the single most likely model, so the variance it returns includes the disagreement between models by the law of total variance. The mixture mean is 0.22 to 0.25 dB more accurate than the mode on 148 listeners, t = 7.2 with the shipped prior and 9.1 with an audiogram prior.

Provenance of the prior

qCLS_core/cls_prior_hyper.mat holds the regressions the audiogram prior uses. It is generated by mcpf_mkhyper.m in neeste/fit_tenfrq, which reproduces the shipped file exactly, all five fields, maximum difference 0.000e+00.

About

A quick Categorical Loudness Scaling test.

Resources

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages