# Fluctuation strength from the Sottek Hearing Model (ECMA-418-2)

> 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/metrics/fluctuation-strength-ecma-418-2.html

**Quantity:** Fluctuation strength · **Unit:** vacil_HMS · **Also known as:** ECMA-418-2 fluctuation strength, vacil_HMS, Sottek fluctuation strength

Fluctuation strength from the Sottek Hearing Model, new in the 4th edition of ECMA-418-2 (June 2025, Clause 9). It uses high-resolution spectral analysis for modulation rates of about 0.25 to 20 Hz.

The current edition is ECMA-418-2:2025 (4th ed.). Open-source implementations of it: **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)** (MATLAB; PR, not merged), **[sottek-hearing-model](https://zhenxianli.github.io/LISQM/projects/sottek-hearing-model.html)** (Python; needs at least 1.37 s of signal; binaural option; unreleased), [ecma418-torch](https://zhenxianli.github.io/LISQM/projects/ecma418-torch.html) (Python; newly released, not yet seen to be widely used; with binaural combination), and [phonometry](https://zhenxianli.github.io/LISQM/projects/phonometry.html) (Python; newly released, not yet seen to be widely used; mono only). So far, only newly released projects, not yet seen to be widely used in the community, have released an implementation of it. Check their validation before relying on them.

## Editions and who implements them

| Date | Edition | Status | What changed | Implemented by |
|---|---|---|---|---|
| 2025-06 | [ECMA-418-2:2025 (4th ed.)](https://ecma-international.org/wp-content/uploads/ECMA-418-2_4th_edition_june_2025.pdf) | current | New Clause 9. | **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)** (PR), **[sottek-hearing-model](https://zhenxianli.github.io/LISQM/projects/sottek-hearing-model.html)** (unreleased), [ecma418-torch](https://zhenxianli.github.io/LISQM/projects/ecma418-torch.html), [phonometry](https://zhenxianli.github.io/LISQM/projects/phonometry.html) |

## Project map

The lines of the project map for Sottek Hearing Model fluctuation strength only, between the projects listed for it (the whole map: https://zhenxianli.github.io/LISQM/projects/map.md).

### Results checked against another project

- [ecma418-torch](https://zhenxianli.github.io/LISQM/projects/ecma418-torch.html) against **[sottek-hearing-model](https://zhenxianli.github.io/LISQM/projects/sottek-hearing-model.html)** (ECMA-418-2:2025 (4th ed.))

### Same contributor

- **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)** and **[sottek-hearing-model](https://zhenxianli.github.io/LISQM/projects/sottek-hearing-model.html)** (Mike Lotinga)

On the map without a line, as no relation to another project listed for Sottek Hearing Model fluctuation strength is recorded for them: [phonometry](https://zhenxianli.github.io/LISQM/projects/phonometry.html).

## Implementations

| Project | Language | Edition | Functions | Validation (as stated) | Notes |
|---|---|---|---|---|---|
| **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)** | MATLAB | [ECMA-418-2:2025 (4th ed.)](https://ecma-international.org/wp-content/uploads/ECMA-418-2_4th_edition_june_2025.pdf) | `FluctuationStrength_ECMA418_2` | not stated | PR (https://github.com/ggrecow/SQAT/pull/78). Open pull request since 2026-09-17. |
| **[sottek-hearing-model](https://zhenxianli.github.io/LISQM/projects/sottek-hearing-model.html)** | Python | [ECMA-418-2:2025 (4th ed.)](https://ecma-international.org/wp-content/uploads/ECMA-418-2_4th_edition_june_2025.pdf) (needs at least 1.37 s of signal; binaural option) | `shm_fluctuation_ecma` | compared with refmap-psychoacoustics (its source) and ArtemiS SUITE (HEAD acoustics) | Unreleased. Merged on 2026-09-18. Five departures from the printed text are documented (four equations and one interpretation of Section 9.1.8). |
| [ecma418-torch](https://zhenxianli.github.io/LISQM/projects/ecma418-torch.html) | Python | [ECMA-418-2:2025 (4th ed.)](https://ecma-international.org/wp-content/uploads/ECMA-418-2_4th_edition_june_2025.pdf) (with binaural combination) | `fluctuation_strength` | compared with sottek-hearing-model and ArtemiS SUITE (HEAD acoustics) | Newly released project, not yet seen to be widely used. |
| [phonometry](https://zhenxianli.github.io/LISQM/projects/phonometry.html) | Python | [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` | standard or paper data (calibration signal only) | Newly released project, not yet seen to be widely used. Misprints found in Clause 9 are listed in the project's errata. |

**See also:** [Fluctuation strength, Osses et al. model and Fastl & Zwicker formula](https://zhenxianli.github.io/LISQM/metrics/fluctuation-strength-osses.html), [Loudness from the Sottek Hearing Model (ECMA-418-2)](https://zhenxianli.github.io/LISQM/metrics/loudness-ecma-418-2.html)

## How they were validated

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

- **[sottek-hearing-model](https://zhenxianli.github.io/LISQM/projects/sottek-hearing-model.html)**, ECMA-418-2:2025 (4th ed.): compared with [refmap-psychoacoustics](https://zhenxianli.github.io/LISQM/projects/refmap-psychoacoustics.html) (its source) and ArtemiS SUITE (HEAD acoustics)
  - Ported or adapted from [refmap-psychoacoustics](https://zhenxianli.github.io/LISQM/projects/refmap-psychoacoustics.html) (the author's own code). It was compared with the code it was ported from, which checks the port only.
  - A draft report (18 September 2026) compares it with `acousticSHMFluctuation.m`, the MATLAB code it was translated from: equal to floating-point precision on the synthetic signals and on one channel of each recording, with a small difference in a short time window on the other channel.
  - Against HEAD acoustics ArtemiS SUITE v17: 0.994 against 1.003 vacil_HMS for the calibration signal (the standard's target is 1.0), −8 % to +12 % for the overall values of three binaural recordings, and correlations of 0.91 to 0.998 for the time-dependent values.
  - **Checked by the maintainer of LISQM:** In personal use, Zhenxian LI found its results in very good agreement with those of HEAD acoustics ArtemiS SUITE. This is a personal check, not a published comparison.
- [ecma418-torch](https://zhenxianli.github.io/LISQM/projects/ecma418-torch.html), ECMA-418-2:2025 (4th ed.): compared with **[sottek-hearing-model](https://zhenxianli.github.io/LISQM/projects/sottek-hearing-model.html)** and ArtemiS SUITE (HEAD acoustics)
  - The 1 kHz tone amplitude-modulated at 4 Hz (60 dB SPL) gives 0.99579 vacil for 10 s (the test allows 1e-2 around 1), and the average specific fluctuation strength in band 17 is 0.38876, against 0.395 from ArtemiS v17 as quoted in the tests of sottek-hearing-model.
  - Against sottek-hearing-model run as an oracle on two signals: with that package's three choices, the time-dependent values differ by at most 6.3e-5 vacil and the single values by at most 6.3e-5; with the defaults, which follow the printed text, the single values differ by 0.2 % and 0.5 %.
- [phonometry](https://zhenxianli.github.io/LISQM/projects/phonometry.html), ECMA-418-2:2025 (4th ed.): standard or paper data (calibration signal only)
  - Checked at the calibration signal only (0.993 vacil_HMS).

Not stated by SQAT.

## Before you compare numbers

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

- **Overall value.** The single value is a 90th percentile of the time-dependent values after the filters have settled. NumPy (sottek-hearing-model) and MATLAB's `prctile` interpolate differently, by at most 0.0005 vacil_HMS on sottek-hearing-model's test signals.
- **Interpretation.** Implementers report misprints and open questions in Clause 9 of the 2025 edition (phonometry's errata, sottek-hearing-model's documented departures), so implementations can differ until they are resolved.

What the projects state:

- **[sottek-hearing-model](https://zhenxianli.github.io/LISQM/projects/sottek-hearing-model.html)**: Input at other sample rates is resampled to 48 kHz. Overall roughness and fluctuation strength are 90th percentiles computed with NumPy (linear interpolation, Hyndman–Fan type 7). The MATLAB code it was translated from uses `prctile`, which interpolates differently, so single values can differ slightly from RefMap and SQAT.
- [ecma418-torch](https://zhenxianli.github.io/LISQM/projects/ecma418-torch.html): Input at other sample rates is resampled to 48 kHz (band-limited, by the Fourier method). The single value is the 90th percentile from `torch.quantile` (linear interpolation) of the time-dependent values, after the first 16 (roughness) or 36 (fluctuation strength) values at 50 Hz are left out. The outer and middle ear filter uses the coefficients as printed in Table 1 of the standard, where sottek-hearing-model uses unrounded ones. By default it follows the printed text in three places where sottek-hearing-model decides otherwise: the step limit of Formula (152) (2e-4 Hz, against 0.2), no fundamental required for an assumed order in Section 9.1.8, and machine epsilon for ε0 (against 1e-12). The options `newton_cap` and `require_fundamental` give sottek-hearing-model's choices. Formula (127) is computed with π instead of the printed 2π in the phase term, and Formula (144) without the printed "− 1", which the code says would shift every rate down one bin.

## References

1. ECMA-418-2:2025 (4th ed.). Psychoacoustic metrics for ITT equipment — Part 2 (methods for describing human perception based on the Sottek Hearing Model). https://ecma-international.org/wp-content/uploads/ECMA-418-2_4th_edition_june_2025.pdf
