# ZwickerLoudness.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/zwickerloudness-jl.html

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

Julia package that computes ISO 532-1:2017 Zwicker loudness from one-third-octave band levels: the stationary method (clause 5) from 28 band levels and, since v0.3.0, the time-varying method (clause 6) with N5 and N10 from a band-level time series. It does not take audio; ZwickerLoudnessAudio.jl is its front end for waveforms.

- **Repository:** https://github.com/slink/ZwickerLoudness.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:** newly released (First released less than about a year ago, and not yet seen to be widely used in the community.)
- **Licence:** MIT
- **Package:** Julia General `ZwickerLoudness` (https://juliahub.com/ui/Packages/General/ZwickerLoudness)
- **Install:** `using Pkg; Pkg.add("ZwickerLoudness")`
- **Latest release:** v0.3.0 (2026-09)
- **Last commit:** 2026-09-02 (active)
- **GitHub stars:** 4
- **Maintainers:** slink
- **AI assistance:** not stated
- **How to cite:** The README links a [Zenodo DOI](https://zenodo.org/badge/latestdoi/1152458596) for the latest version. Name the version or commit you used.
- **Entry checked:** 2026-10-08

## 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 28 one-third-octave band levels; since 0.2.0) | `zwicker_loudness` | available | standard or paper data (one Annex B signal); also compared with MoSQITo | — |
| [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 band levels at 2000 Hz; N5 and N10; since 0.3.0) | `zwicker_loudness_time_varying` | available | standard or paper data (one Annex B signal); also compared with MoSQITo (its source) | — |

## 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 28 one-third-octave band levels): standard or paper data (one Annex B signal); also compared with **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)**
  - Checked against ISO 532-1 Annex B signal 1, the only 28-band reference in Annex B (83.296 sone, tolerance ±5 %).
  - Checked per Bark bin against MoSQITo output (maximum difference below 0.001 sone/Bark).
- [Zwicker loudness](https://zhenxianli.github.io/LISQM/metrics/loudness-zwicker.html), ISO 532-1:2017 (time-varying, from band levels at 2000 Hz; N5 and N10): standard or paper data (one Annex B signal); 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.
  - Stages are tested against MoSQITo `loudness_zwtv` intermediates (agreement about 1e-9 to 1e-15).
  - An Annex B.4 "Test signal 6" test regenerates band levels from a local MoSQITo checkout and is skipped when none is present; CI clones MoSQITo for it.
  - The ISO WAV files are not included.

## Notes

- Version 0.1.0 (February 2026) was described as "ISO 532B" and was never registered; the code was rewritten for ISO 532-1:2017 in 0.2.0, the first version in the Julia General registry (2026-02-11).
- The time-varying kernel takes a 28 × n matrix of band levels at the standard's 2000 Hz block rate. Its transcription reference is MoSQITo's `loudness_zwtv` at commit `d990c33f94f1`.
- Free-field and diffuse-field listening conditions are supported.

## Before you rely on it

- N5 and N10 use Hyndman–Fan type 7 quantiles; the README notes that MATLAB's `prctile` (type 5), used by SQAT, can differ by a few percent on the same data.

## Sources

- https://github.com/slink/ZwickerLoudness.jl
- https://github.com/slink/ZwickerLoudness.jl/blob/main/README.md
- https://github.com/slink/ZwickerLoudness.jl/blob/main/test/fixtures/NOTICE.md
- https://github.com/slink/ZwickerLoudness.jl/releases
- https://github.com/JuliaRegistries/General/tree/master/Z/ZwickerLoudness
- https://github.com/slink/ZwickerLoudness.jl/blob/main/src/method2.jl
