# ZwickerLoudnessAudio.jl

> Part of [LISQM](https://zhenxianli.github.io/LISQM/) (List of Implementations of Sound Quality Metrics), a list of open-source implementations of psychoacoustic metrics. Data as of 2026-10-28. Web page: https://zhenxianli.github.io/LISQM/projects/zwickerloudnessaudio-jl.html

**Newly released project.** First registered in June 2026. Not yet seen to be widely used in the community. Check its validation before relying on it.

Julia front end to ZwickerLoudness.jl that computes ISO 532-1:2017 Zwicker loudness from waveforms or WAV files: stationary loudness, and since v0.3.0 time-varying loudness with N5 and N10.

- **Repository:** https://github.com/slink/ZwickerLoudnessAudio.jl
- **Language:** Julia
- **Kind:** Library/Toolbox (Functions to call from your own code: a Python package, a MATLAB toolbox, or a C, C++, C#, Rust or Julia library.)
- **Group:** other (Tools that do not compute the metrics themselves: interfaces, front ends and wrappers that call one of the listed projects.)
- **Licence:** MIT — The README credits MoSQITo (Apache-2.0) for the transcribed time-varying filter tables.
- **Package:** Julia General `ZwickerLoudnessAudio` (https://juliahub.com/ui/Packages/General/ZwickerLoudnessAudio)
- **Install:** `using Pkg; Pkg.add("ZwickerLoudnessAudio")`
- **Latest release:** v0.3.0 (2026-09)
- **Last commit:** 2026-09-02 (active)
- **GitHub stars:** 2
- **Maintainers:** slink
- **AI assistance:** not stated
- **How to cite:** The README links a [Zenodo DOI](https://zenodo.org/badge/latestdoi/1253784080) for the latest version. Name the version or commit you used.
- **Entry checked:** 2026-10-06

## What it implements

| Metric | Edition | Functions | Status | Validation (as stated) | Notes |
|---|---|---|---|---|---|
| [Zwicker loudness](https://zhenxianli.github.io/LISQM/metrics/loudness-zwicker.html) | [ISO 532-1:2017](https://www.iso.org/standard/63077.html) (stationary, from a waveform or WAV file; since 0.2.0) | `loudness_zwst`, `band_levels` | available | standard or paper data | Computes the third-octave levels itself (per-band Butterworth filters of order 3 by default, as in MoSQITo) and passes them to ZwickerLoudness.jl for the loudness. |
| [Zwicker loudness](https://zhenxianli.github.io/LISQM/metrics/loudness-zwicker.html) | [ISO 532-1:2017](https://www.iso.org/standard/63077.html) (time-varying, from a waveform or WAV file at 48 kHz; since 0.3.0) | `loudness_zwtv` | available | standard or paper data; also compared with MoSQITo (its source) | The Annex A filter cascade is transcribed from MoSQITo (`_third_octave_levels`, `_square_and_smooth`). |

## How it was validated

As reported by the project; LISQM has not run the code. Two implementations that agree can still share the same error.

- [Zwicker loudness](https://zhenxianli.github.io/LISQM/metrics/loudness-zwicker.html), ISO 532-1:2017 (stationary, from a waveform or WAV file): standard or paper data
  - ISO 532-1 Annex B signals 2–5, synthesised in-process, are within the standard's ±5 % (+2.9 %, +3.6 %, +0.5 % and +2.6 % per the README).
- [Zwicker loudness](https://zhenxianli.github.io/LISQM/metrics/loudness-zwicker.html), ISO 532-1:2017 (time-varying, from a waveform or WAV file at 48 kHz): standard or paper data; also compared with **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)** (its source)
  - Ported or adapted from **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)**. It was compared with the code it was ported from, which checks the port only.
  - Cross-checked end to end with MoSQITo `loudness_zwtv` (N(t) about 3e-16 relative, N5/N10 about 2e-15 absolute).
  - An Annex B.4 test is skipped when the ISO recording is not available locally.

## Before you compare numbers

Implementations of the same metric can give different numbers without either being wrong. Check these choices first.

- [Zwicker loudness](https://zhenxianli.github.io/LISQM/metrics/loudness-zwicker.html) (ISO 532-1:2017): Stationary loudness resamples input below 48 kHz to 48 kHz (polyphase), with a warning.
- [Zwicker loudness](https://zhenxianli.github.io/LISQM/metrics/loudness-zwicker.html) (ISO 532-1:2017): Time-varying loudness accepts 48 kHz input only (an error otherwise).

## Notes

- Depends on ZwickerLoudness.jl (compat 0.3), which does the loudness calculation from band levels; this package computes the band levels.
- First registered in the Julia General registry as version 0.2.0 (2026-06-01).

## Sources

- https://github.com/slink/ZwickerLoudnessAudio.jl
- https://github.com/slink/ZwickerLoudnessAudio.jl/blob/main/README.md
- https://github.com/slink/ZwickerLoudnessAudio.jl/releases
- https://github.com/JuliaRegistries/General/tree/master/Z/ZwickerLoudnessAudio
