Skip to content

Listening Test

github-actions[bot] edited this page Sep 15, 2026 · 2 revisions

Guided listening test

The test is a fixed-level listening survey for sound personalization. It is not a calibrated audiometer and does not produce a diagnosis, audiogram or hearing thresholds in dB HL. A response does not establish a headset's acoustic response or an appropriate EQ boost.

Choose your test

Mode Frequencies per selected ear Purpose
Quick 8 A short, repeatable overview
Standard 16 Default, with additional speech and upper-frequency steps
Detailed 32 All available frequency steps
Custom 1–32 Repeat a selected range or a few frequencies

Available frequencies in Hz: 40, 50, 63, 80, 100, 125, 160, 200, 250, 315, 400, 500, 630, 750, 1,000, 1,250, 1,500, 2,000, 2,500, 3,000, 4,000, 5,000, 6,000, 8,000, 9,000, 10,000, 11,200, 12,500, 14,000, 16,000, 18,000 and 20,000.

Choose both ears, left only or right only. Both-ear tests can alternate ears at each frequency or finish one ear first. Samples can be steady or three pulses, last 0.7 or 1.2 seconds, and use −48 dBFS peak or the quieter −54 dBFS option. No automatic level escalation is used. Duration includes the gaps between pulses.

  1. Use stereo headphones in a quiet room at a low, comfortable Windows and headset volume. Pause other audio. Turn off mono audio, spatial effects and other audio processing; these can affect channel isolation and results.
  2. On My hearing, choose Start guided listening test, configure the test and select Start test.
  3. Start each sample yourself. After completed playback, choose I heard it or Unclear. Skip is available without playback. Do not raise the volume to chase a tone.
  4. Use Previous to revisit an answered step or Pause to take a break. Responses and progress are saved automatically.
  5. Review the completed response table. Repeat individual entries or use Retest unclear / skipped. Previous responses remain until replaced; you can return to the map without replacing them.
  6. Choose Save map & review personal EQ. Use the notes alongside real music, dialogue or game audio when adjusting personal EQ. The test itself does not change EQ.

Reference audio asset pack

The repository includes a reproducible test-audio folder at assets/hearing-test/ for QA and manual verification. It contains 64 generated WAV files covering all 32 Detailed-test frequencies in both steady and pulsed form.

The canonical files are 48 kHz / 24-bit PCM / mono / 700 ms / −48 dBFS with a 15 ms click-reducing fade. The mono waveform is intentional: the runtime listening engine routes each waveform to the selected left or right ear, so duplicate ear-specific files are unnecessary.

assets/hearing-test/manifest.json records the format and SHA-256 checksum for every WAV. The pack can be regenerated deterministically with:

python scripts/Generate-HearingTestAssets.py

or validated without rewriting it with:

python scripts/Generate-HearingTestAssets.py --check

The release pipeline validates this pack and includes it under Assets/hearing-test/ in the Windows package. The app itself still synthesizes tones at the active output sample rate rather than relying on these fixed 48 kHz assets, which preserves output-format capability checks and per-ear routing.

Shortcuts and saved progress

Space plays/replays, 1 means Heard, 2 means Unclear, S skips, Backspace revisits a previous response, and P / Esc pauses. Escape on the paused or results screen closes the window. Closing preserves an unfinished test, including completed maps awaiting final saving.

Next time, Resume saved test restores the protocol and answers for that headset. Playback requires the same output ID, stereo sample rate and Windows volume. A restored step requires replay before accepting Heard/Unclear. Start new test · replace unfinished explicitly replaces the unfinished test for that headset. Completed history is retained.

Headset volume controls, analogue headphone changes, fit, external effects and room noise cannot be read automatically. Keep them consistent. A matching software setup does not guarantee equivalent acoustic conditions.

Frequency and format limits

Test tones stop at 20 kHz. The commonly described human hearing range is approximately 20 Hz–20 kHz, with considerable variation; 90 kHz is above that normal range. See The Audible Spectrum, NCBI Bookshelf. An audio sample rate such as 96 kHz describes samples per second, not the highest pitch a person can hear.

The generation guard is the smaller of 20 kHz and 45% of the actual Windows output sample rate. A 20 kHz sample therefore requires at least a 48 kHz output in this preview. Unsupported frequencies are marked Format unsupported, not Unclear or Skipped. This digital format check does not establish what the connected headphones reproduce.

Samples bypass VxSound EQ and use short fade-in/out ramps. Windows volume/mute, output state and format are checked before/after playback and while the test is open. A detected change pauses the test and invalidates the pending response. Playback completion uses the output device clock, not just a timer or the source's read position. The digital level is not a sound-pressure measurement at the ear.

History and exports

Maps stay in %LOCALAPPDATA%\VxSound\listening, with the active map also in the personal profile. History & export displays the latest 20 maps for the current headset; older files remain on disk. Unreadable records are skipped and retained. JSON exports include protocol, response counts, previous response, output binding, Windows volume and completion time. CSV exports provide a table of observations and test settings without headset labels or device IDs.

Comparison requires the same headset label, output ID, sample rate, Windows volume, tone pattern, duration and digital level. Only shared frequency/ear pairs are compared. Changes are displayed as categorical observations, not improvement/deterioration or dB hearing loss. Older 0.1.0 reports retain their 12-frequency protocol; missing historical volume metadata is not invented, so these reports are not used for matched-setup comparisons.

Personal listening data is excluded from shareable sound-preset JSON. Exporting a listening map is an explicit separate action. The six manual personal EQ bands remain limited to −6 to +3 dB and require their bound output. A new headset binding disables previous personal correction.

A headset's response and listening conditions affect results; this survey cannot separate headphone response from hearing sensitivity. Clinical threshold measurement requires calibrated equipment and controlled procedures; see ASHA's guidelines for pure-tone audiometry and MedlinePlus: Hearing Tests for Adults.

Validation

Automated checks cover ear order, custom frequency validation, cancelled/stale playback tokens, review queues, checkpoint restoration, legacy reports, setup compatibility, history retention, bounded record reads, JSON/CSV exports, tone frequency/level, pulse gaps, fades, channel isolation and allocation-free core rendering. Windows CI additionally verifies the checked-in hearing-test WAV pack against its manifest before building, publishing and packaging the app. Acoustic performance, volume-change timing and real WASAPI playback still require physical-device evaluation.

Clone this wiki locally