# phonometry

> 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/phonometry.html

**Newly released project.** Its psychoacoustics module was first released in July 2026 (version 3.1.0). Not yet seen to be widely used in the community. Check its validation before relying on it.

Python acoustics library (formerly PyOctaveBand) that added a large psychoacoustics module in July 2026: ISO 532-1, -2 and -3 loudness, ECMA-418-2:2025 loudness, tonality, roughness and fluctuation strength (monaural), DIN 45692 sharpness, Osses fluctuation strength, ECMA-418-1:2024 TNR/PR, tonal audibility, impulsiveness, EPNL and ISO 226:2023. Only NumPy and SciPy are required.

- **Repository:** https://github.com/jmrplens/phonometry
- **Documentation:** https://jmrplens.github.io/phonometry/
- **Language:** Python
- **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:** PyPI `phonometry` (https://pypi.org/project/phonometry/)
- **Install:** `pip install phonometry`
- **Latest release:** v3.3.0 (2026-07); pre-release 4.0.0rc1 (2026-09)
- **Last commit:** 2026-10-14 (active)
- **GitHub stars:** 125
- **Maintainers:** José M. Requena Plens
- **AI assistance:** disclosed — The draft paper (`paper/paper.md`) has an AI usage disclosure: language models drafted code, tests and documentation from the author's clause-by-clause readings, under the author's direction and review. 34 commits from July 2026 contain Claude Code session links.
- **How to cite:** Software DOI: [10.5281/zenodo.21215280](https://doi.org/10.5281/zenodo.21215280). The repository has a [CITATION.cff](https://github.com/jmrplens/phonometry/blob/main/CITATION.cff) file. 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 and time-varying; since 3.1.0) | `loudness_zwicker`, `loudness_zwicker_from_spectrum` | available | standard or paper data | — |
| [Moore–Glasberg loudness](https://zhenxianli.github.io/LISQM/metrics/loudness-moore-glasberg.html) | [ISO 532-2:2017](https://www.iso.org/standard/63078.html) (with binaural inhibition; since 3.1.0) | `loudness_moore_glasberg`, `loudness_moore_glasberg_from_spectrum`, `loudness_moore_glasberg_from_third_octave` | available | standard or paper data | — |
| [Time-varying loudness (Moore–Glasberg–Schlittenlacher)](https://zhenxianli.github.io/LISQM/metrics/loudness-moore-glasberg-time-varying.html) | [ISO 532-3:2023](https://www.iso.org/standard/69856.html) (since 3.1.0) | `loudness_moore_glasberg_time` | available | standard or paper data | — |
| [Sottek Hearing Model loudness](https://zhenxianli.github.io/LISQM/metrics/loudness-ecma-418-2.html) | [ECMA-418-2:2025 (4th ed.)](https://ecma-international.org/wp-content/uploads/ECMA-418-2_4th_edition_june_2025.pdf) (mono only; since 3.1.0) | `loudness_ecma` | available | standard or paper data (calibration signal only; outside the allowed adjustment) | — |
| [Sharpness](https://zhenxianli.github.io/LISQM/metrics/sharpness.html) | [DIN 45692:2009](https://www.dinmedia.de/en/standard/din-45692/117635111) (also the informative Aures and von Bismarck variants; since 3.1.0) | `sharpness_din`, `sharpness_din_from_specific` | available | standard or paper data | — |
| [Sottek Hearing Model roughness](https://zhenxianli.github.io/LISQM/metrics/roughness-ecma-418-2.html) | [ECMA-418-2:2025 (4th ed.)](https://ecma-international.org/wp-content/uploads/ECMA-418-2_4th_edition_june_2025.pdf) (mono only; no entropy weighting; since 3.1.0) | `roughness_ecma` | available | standard or paper data (calibration signal only) | — |
| [Fluctuation strength (Osses et al.)](https://zhenxianli.github.io/LISQM/metrics/fluctuation-strength-osses.html) | [Osses et al. (2016)](https://doi.org/10.1121/2.0000410) (since 3.1.0) | `fluctuation_strength` | available | standard or paper data; also compared with SQAT | — |
| [Fluctuation strength (Osses et al.)](https://zhenxianli.github.io/LISQM/metrics/fluctuation-strength-osses.html) | [Fastl & Zwicker (2007)](https://doi.org/10.1007/978-3-540-68888-4) (closed-form expression for amplitude-modulated noise; since 3.1.0) | `fluctuation_strength_am_noise` | available | standard or paper data | — |
| [Sottek Hearing Model fluctuation strength](https://zhenxianli.github.io/LISQM/metrics/fluctuation-strength-ecma-418-2.html) | [ECMA-418-2:2025 (4th ed.)](https://ecma-international.org/wp-content/uploads/ECMA-418-2_4th_edition_june_2025.pdf) (mono only; since 3.3.0) | `fluctuation_strength_ecma` | available | standard or paper data (calibration signal only) | Misprints found in Clause 9 are listed in the project's errata. |
| [Sottek Hearing Model tonality](https://zhenxianli.github.io/LISQM/metrics/tonality-ecma-418-2.html) | [ECMA-418-2:2025 (4th ed.)](https://ecma-international.org/wp-content/uploads/ECMA-418-2_4th_edition_june_2025.pdf) (mono only; since 3.1.0) | `tonality_ecma` | available | standard or paper data (calibration signal only) | — |
| [Tone-to-noise ratio and prominence ratio](https://zhenxianli.github.io/LISQM/metrics/tone-to-noise-prominence-ratio.html) | [ECMA-418-1:2024 (3rd ed.)](https://ecma-international.org/wp-content/uploads/ECMA-418-1_3rd_edition_december_2024.pdf) (since 3.1.0) | `tone_to_noise_ratio`, `prominence_ratio`, `assess_tones` | available | standard or paper data (formula examples; no published TNR or PR value) | The "prominent" flag applies the numeric criterion only. |
| [Audibility of tones in noise (ISO/TS 20065)](https://zhenxianli.github.io/LISQM/metrics/tonal-audibility-iso-20065.html) | [ISO/PAS 20065:2016](https://www.iso.org/standard/66941.html) (since 3.1.0) | `tone_audibility`, `analyze_spectrum`, `audibility_from_levels`, `mean_audibility`, `audibility_uncertainty` | available | standard or paper data; also compared with DIN 45681 Annex J reference program | Follows the 2016 PAS, not the 2022 TS. Does not apply the A-weighting required by clause 5.3.2. DIN 45681 itself is not implemented. |
| [Tonal audibility (ISO 1996-2)](https://zhenxianli.github.io/LISQM/metrics/tonal-audibility-iso-1996-2.html) | [ISO 1996-2:2017](https://www.iso.org/standard/59766.html) (Annex K survey method and Table J.1; in the phonometry.environment namespace) | — | available | not stated | — |
| [Tonal audibility (ISO 1996-2)](https://zhenxianli.github.io/LISQM/metrics/tonal-audibility-iso-1996-2.html) | [ISO 1996-2:2007](https://www.iso.org/standard/41860.html) (Annex C; in the phonometry.environment namespace) | — | available | not stated | — |
| [Tonal audibility of wind turbines (IEC 61400-11)](https://zhenxianli.github.io/LISQM/metrics/tonal-audibility-iec-61400-11.html) | [IEC 61400-11:2012+AMD1:2018](https://webstore.iec.ch/en/publication/63367) | `wind_turbine_tonality` | available | not stated | — |
| [Impulse prominence](https://zhenxianli.github.io/LISQM/metrics/impulsiveness.html) | [ISO/PAS 1996-3:2022](https://www.iso.org/standard/77035.html) (in the phonometry.environment namespace) | — | available | not stated | — |
| [Impulse prominence](https://zhenxianli.github.io/LISQM/metrics/impulsiveness.html) | [NT ACOU 112](http://www.nordtest.info/wp/2002/05/01/acoustics-prominence-of-impulsive-sounds-and-for-adjustment-of-laeq-nt-acou-112/) (in the phonometry.environment namespace) | — | available | not stated | — |
| [Psychoacoustic annoyance](https://zhenxianli.github.io/LISQM/metrics/psychoacoustic-annoyance.html) | [Zwicker & Fastl (1999)](https://doi.org/10.1007/978-3-662-09562-1) (since 3.1.0) | `psychoacoustic_annoyance`, `psychoacoustic_annoyance_from_signal` | available | own tests only | Follows Eqs. 16.2–16.4 of Fastl & Zwicker (2007), the textbook form of Widmann's model. |
| [Equal-loudness contours](https://zhenxianli.github.io/LISQM/metrics/equal-loudness-contours.html) | [ISO 226:2023](https://www.iso.org/standard/83117.html) (since 3.1.0) | `equal_loudness_contour`, `equal_loudness_contours`, `loudness_level`, `hearing_threshold` | available | standard or paper data | — |
| [Perceived noise level and EPNL](https://zhenxianli.github.io/LISQM/metrics/epnl.html) | [ICAO Annex 16, Vol. I](https://store.icao.int/en/annex-16-environmental-protection-volume-i-aircraft-noise) (PNL, PNLT and EPNL, in the phonometry.aircraft namespace) | — | available | standard or paper data | — |

## 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: standard or paper data
  - Ported or adapted from ISO 532-1 Annex A reference program.
  - Annex B test signals are used in the tests.
- [Moore–Glasberg loudness](https://zhenxianli.github.io/LISQM/metrics/loudness-moore-glasberg.html), ISO 532-2:2017: standard or paper data
  - The documentation says it reproduces the Annex B tone and broadband cases to within a percent or two.
- [Time-varying loudness (Moore–Glasberg–Schlittenlacher)](https://zhenxianli.github.io/LISQM/metrics/loudness-moore-glasberg-time-varying.html), ISO 532-3:2023: standard or paper data
  - A documented deviation: the Annex B WAV-file cases are not reproduced, and Annex C values are used instead.
- [Sottek Hearing Model loudness](https://zhenxianli.github.io/LISQM/metrics/loudness-ecma-418-2.html), ECMA-418-2:2025 (4th ed.): standard or paper data (calibration signal only; outside the allowed adjustment)
  - Checked at the calibration signal only, where it gives 0.9843 sone_HMS (−1.55 %).
- [Sharpness](https://zhenxianli.github.io/LISQM/metrics/sharpness.html), DIN 45692:2009: standard or paper data
  - Checked with the DIN 45692 reference signal and Tables A.2 and A.3.
- [Sottek Hearing Model roughness](https://zhenxianli.github.io/LISQM/metrics/roughness-ecma-418-2.html), ECMA-418-2:2025 (4th ed.); [Sottek Hearing Model tonality](https://zhenxianli.github.io/LISQM/metrics/tonality-ecma-418-2.html), ECMA-418-2:2025 (4th ed.): standard or paper data (calibration signal only)
  - Checked at the calibration signal only.
- [Fluctuation strength (Osses et al.)](https://zhenxianli.github.io/LISQM/metrics/fluctuation-strength-osses.html), Osses et al. (2016): standard or paper data; also compared with **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)**
  - Compared with the literature values in Table 1 of Osses et al. (2016): for amplitude-modulated 70 dB tones the Pearson correlation is about 0.98, within a factor of about 2.1 at every point. SQAT's `FluctuationStrength_Osses2016` was consulted as a numeric reference for the shape of the sweep.
  - Validated for amplitude modulation only; a steady 1 kHz tone reads about 0.09 vacil.
- [Fluctuation strength (Osses et al.)](https://zhenxianli.github.io/LISQM/metrics/fluctuation-strength-osses.html), Fastl & Zwicker (2007): standard or paper data
  - A conformance row checks Eq. (10.2) of Fastl & Zwicker for amplitude-modulated broadband noise.
- [Sottek Hearing Model fluctuation strength](https://zhenxianli.github.io/LISQM/metrics/fluctuation-strength-ecma-418-2.html), ECMA-418-2:2025 (4th ed.): standard or paper data (calibration signal only)
  - Checked at the calibration signal only (0.993 vacil_HMS).
- [Tone-to-noise ratio and prominence ratio](https://zhenxianli.github.io/LISQM/metrics/tone-to-noise-prominence-ratio.html), ECMA-418-1:2024 (3rd ed.): standard or paper data (formula examples; no published TNR or PR value)
  - Tests check worked examples printed in ECMA-418-1:2024: the critical band at 500 Hz and 1 kHz (Clause 10, Formula 2), its band edges at 1 kHz (Clause 12.2) and the proximity spacing at 150 and 850 Hz (Clause 11.6, Formula 14).
  - TNR and PR of a 1 kHz tone in white noise are compared with the values expected from the standard's formulas (within 0.4 dB for TNR and 0.1 dB for PR); no TNR or PR value published in the standard is checked.
- [Audibility of tones in noise (ISO/TS 20065)](https://zhenxianli.github.io/LISQM/metrics/tonal-audibility-iso-20065.html), ISO/PAS 20065:2016: standard or paper data; also compared with DIN 45681 Annex J reference program
  - Reproduces the Annex E worked example.
  - Parts are checked against DIN 45681:2005 and its Annex J reference program.
- [Psychoacoustic annoyance](https://zhenxianli.github.io/LISQM/metrics/psychoacoustic-annoyance.html), Zwicker & Fastl (1999): own tests only
  - Tests compare one set of inputs (N5 = 30 sone, S = 2.0 acum, F = 0.5 vacil, R = 0.3 asper) with the value worked out by hand from Eqs. 16.2–16.4 (37.0478, within 0.001) and check the terms of the formula; no published example is used.
- [Equal-loudness contours](https://zhenxianli.github.io/LISQM/metrics/equal-loudness-contours.html), ISO 226:2023: standard or paper data
  - Tests compare 17 points of Table B.1 (20 to 90 phon, 20 Hz to 12.5 kHz) and 6 points of Table B.2 with the computed contours and loudness levels, within 0.05 dB or phon, and the hearing threshold with Table 1.
- [Perceived noise level and EPNL](https://zhenxianli.github.io/LISQM/metrics/epnl.html), ICAO Annex 16, Vol. I: standard or paper data
  - Tested with the EPNL example of ICAO Doc 9501 (Environmental Technical Manual).

Not stated for Tonal audibility (ISO 1996-2) · ISO 1996-2:2017; Tonal audibility (ISO 1996-2) · ISO 1996-2:2007; Tonal audibility of wind turbines (IEC 61400-11) · IEC 61400-11:2012+AMD1:2018; Impulse prominence · ISO/PAS 1996-3:2022; Impulse prominence · NT ACOU 112.

## Before you compare numbers

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

- [Time-varying loudness (Moore–Glasberg–Schlittenlacher)](https://zhenxianli.github.io/LISQM/metrics/loudness-moore-glasberg-time-varying.html) (ISO 532-3:2023): Documented deviation: it runs at the native sample rate instead of resampling to 32 kHz.

## Notes

- Renamed from PyOctaveBand (octave-band filtering) at 3.0.0 on 2026-07-06; the psychoacoustics module arrived in 3.1.0 on 2026-07-13. 873 of its 905 commits are from 2026.
- The README reports 1793 of 1793 conformance checks passing across 519 standards, generated by the project's own CI ([CONFORMANCE.md](https://github.com/jmrplens/phonometry/blob/main/docs/CONFORMANCE.md)).
- Keeps a public errata list of misprints found in standards, including ECMA-418-1:2024 and ECMA-418-2:2025 ([ERRATA.md](https://github.com/jmrplens/phonometry/blob/main/docs/ERRATA.md)).
- A JOSS-format paper draft exists in the repository; no published paper yet. Version 4.0 (release candidate since 2026-09-10) moves modules.
- Not implemented: Daniel & Weber roughness, Aures tonality, More and Di annoyance, and binaural combination for ECMA-418-2.

## Before you rely on it

- Very new (psychoacoustics module first released in July 2026) and not yet seen to be widely used in the community; no independent verification has been published.
- Single maintainer; all validation comes from the project's own tests.
- The ECMA-418-2 checks only use the calibration signals, and no comparison with another implementation is reported. Its loudness reads 0.984 sone_HMS at the calibration point, which its own documentation says is outside the adjustment the standard allows.
- Requires Python 3.13 or newer.

## Sources

- https://github.com/jmrplens/phonometry/blob/main/README.md
- https://github.com/jmrplens/phonometry/blob/main/CHANGELOG.md
- https://github.com/jmrplens/phonometry/blob/main/docs/CONFORMANCE.md
- https://github.com/jmrplens/phonometry/blob/main/docs/ERRATA.md
- https://github.com/jmrplens/phonometry/blob/main/tests/psychoacoustics/quality/test_tonality.py
- https://github.com/jmrplens/phonometry/blob/main/tests/psychoacoustics/quality/test_annoyance.py
- https://github.com/jmrplens/phonometry/blob/main/tests/psychoacoustics/loudness/test_contours.py
- https://github.com/jmrplens/phonometry/blob/main/CITATION.cff
- https://github.com/jmrplens/phonometry/blob/main/paper/paper.md
- https://jmrplens.github.io/phonometry/
- https://pypi.org/project/phonometry/
- https://github.com/jmrplens/phonometry/blob/main/src/phonometry/psychoacoustics/quality/fluctuation_strength.py
