# Roughness 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/roughness-ecma-418-2.html

**Quantity:** Roughness · **Unit:** asper_HMS · **Also known as:** ECMA-418-2 roughness, asper_HMS, Sottek roughness, SHM roughness

Roughness from the Sottek Hearing Model, Clause 7 of ECMA-418-2. The 2nd edition (2022) added an optional entropy weighting for cases where rotational speed is measured; the 3rd edition (2024) adapted zero-padding and segmentation, and its refinements were mainly to roughness.

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), **[sottek-hearing-model](https://zhenxianli.github.io/LISQM/projects/sottek-hearing-model.html)** (Python; with combined binaural output), [refmap-psychoacoustics](https://zhenxianli.github.io/LISQM/projects/refmap-psychoacoustics.html) (MATLAB, Python), [MetaSona](https://zhenxianli.github.io/LISQM/projects/metasona.html) (C, Python; newly released, not yet seen to be widely used; mono or stereo; optional entropy weighting not applied), [ecma418-torch](https://zhenxianli.github.io/LISQM/projects/ecma418-torch.html) (Python; newly released, not yet seen to be widely used; with binaural combination; without the optional entropy weighting of Section 7.1.6), and [phonometry](https://zhenxianli.github.io/LISQM/projects/phonometry.html) (Python; newly released, not yet seen to be widely used; mono only; no entropy weighting). Implementations of earlier editions or related models: **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)** (MATLAB; ECMA-418-2:2024 (3rd ed.); with binaural combination), **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)** (Python; ECMA-418-2:2022 (2nd ed.)), and [Mosqito.NET](https://zhenxianli.github.io/LISQM/projects/mosqito-net.html) (C#; newly released, not yet seen to be widely used; ECMA-418-2:2022 (2nd ed.)).

## 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 | Hearing-model and conformance updates (48 kHz sampling). | **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)**, **[sottek-hearing-model](https://zhenxianli.github.io/LISQM/projects/sottek-hearing-model.html)**, [refmap-psychoacoustics](https://zhenxianli.github.io/LISQM/projects/refmap-psychoacoustics.html), [MetaSona](https://zhenxianli.github.io/LISQM/projects/metasona.html), [ecma418-torch](https://zhenxianli.github.io/LISQM/projects/ecma418-torch.html), [phonometry](https://zhenxianli.github.io/LISQM/projects/phonometry.html) |
| 2024-12 | [ECMA-418-2:2024 (3rd ed.)](https://ecma-international.org/wp-content/uploads/ECMA-418-2_3rd_edition_december_2024.pdf) | superseded | Zero-padding and segmentation adapted; refinements mainly to roughness. | **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)** |
| 2022-12 | [ECMA-418-2:2022 (2nd ed.)](https://ecma-international.org/wp-content/uploads/ECMA-418-2_2nd_edition_december_2022.pdf) | superseded | Refined calculation; optional entropy-weighted roughness. | **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)**, [Mosqito.NET](https://zhenxianli.github.io/LISQM/projects/mosqito-net.html) |
| 2020-12 | [ECMA-418-2:2020 (1st ed.)](https://ecma-international.org/wp-content/uploads/ECMA-418-2_1st_edition_december_2020.pdf) | superseded | Clause 7 roughness. | — |

## Project map

The lines of the project map for Sottek Hearing Model roughness only, between the projects listed for it (the whole map: https://zhenxianli.github.io/LISQM/projects/map.md). Agreement between a project and the code it was ported or adapted from only checks the port.

### Ported or adapted from another project

- From **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)**: [MetaSona](https://zhenxianli.github.io/LISQM/projects/metasona.html) (ECMA-418-2:2025 (4th ed.))
- From **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)**: [Mosqito.NET](https://zhenxianli.github.io/LISQM/projects/mosqito-net.html) (ECMA-418-2:2022 (2nd ed.))

### The author's own code

- From [refmap-psychoacoustics](https://zhenxianli.github.io/LISQM/projects/refmap-psychoacoustics.html) (Mike Lotinga): **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)** (ECMA-418-2:2025 (4th ed.) and ECMA-418-2:2024 (3rd ed.)); **[sottek-hearing-model](https://zhenxianli.github.io/LISQM/projects/sottek-hearing-model.html)** (ECMA-418-2:2025 (4th ed.))

### Used at run time

- [rota-order](https://zhenxianli.github.io/LISQM/projects/rota-order.html) calls **[sottek-hearing-model](https://zhenxianli.github.io/LISQM/projects/sottek-hearing-model.html)** (ECMA-418-2:2025 (4th ed.))
- [pySQAT](https://zhenxianli.github.io/LISQM/projects/pysqat.html) calls **[sottek-hearing-model](https://zhenxianli.github.io/LISQM/projects/sottek-hearing-model.html)** (ECMA-418-2:2025 (4th ed.))
- [PsychoBox](https://zhenxianli.github.io/LISQM/projects/psychobox.html) calls **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)** (ECMA-418-2:2022 (2nd ed.))

### 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 roughness 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) (since v2.0) | `Roughness_ECMA418_2` | compared with ArtemiS SUITE (HEAD acoustics) | Amended to the 4th edition in November 2025. |
| **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)** | MATLAB | [ECMA-418-2:2024 (3rd ed.)](https://ecma-international.org/wp-content/uploads/ECMA-418-2_3rd_edition_december_2024.pdf) (with binaural combination; since v1.3) | `Roughness_ECMA418_2` | compared with ArtemiS SUITE (HEAD acoustics) | In v1.3; v2.0 follows the 4th edition. |
| **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)** | Python | [ECMA-418-2:2022 (2nd ed.)](https://ecma-international.org/wp-content/uploads/ECMA-418-2_2nd_edition_december_2022.pdf) (since 1.2.0) | `roughness_ecma` | standard or paper data; also compared with ArtemiS SUITE (HEAD acoustics) | The documentation still lists it as under development. An open pull request (#95) fixes the low-pass filter range, which caused discrepancies with SQAT for time-varying signals. |
| **[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) (with combined binaural output; since 0.1.9) | `shm_roughness_ecma` | standard or paper data (reference signal and one recording); also compared with ArtemiS SUITE (HEAD acoustics) | — |
| [refmap-psychoacoustics](https://zhenxianli.github.io/LISQM/projects/refmap-psychoacoustics.html) | MATLAB, Python | [ECMA-418-2:2025 (4th ed.)](https://ecma-international.org/wp-content/uploads/ECMA-418-2_4th_edition_june_2025.pdf) | `acousticSHMRoughness` | compared with ArtemiS SUITE (HEAD acoustics) | — |
| [MetaSona](https://zhenxianli.github.io/LISQM/projects/metasona.html) | C, Python | [ECMA-418-2:2025 (4th ed.)](https://ecma-international.org/wp-content/uploads/ECMA-418-2_4th_edition_june_2025.pdf) (mono or stereo; optional entropy weighting not applied; since 0.2.0) | `roughness_ecma` | compared with SQAT (its source) | Newly released project, not yet seen to be widely used. Uses the standard's 20 ms grid and nominal calibration factor, where SQAT uses a slightly adjusted calibration. |
| [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; without the optional entropy weighting of Section 7.1.6) | `roughness` | 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; no entropy weighting; since 3.1.0) | `roughness_ecma` | standard or paper data (calibration signal only) | Newly released project, not yet seen to be widely used. |
| [Mosqito.NET](https://zhenxianli.github.io/LISQM/projects/mosqito-net.html) | C# | [ECMA-418-2:2022 (2nd ed.)](https://ecma-international.org/wp-content/uploads/ECMA-418-2_2nd_edition_december_2022.pdf) | `Sq.RoughnessEcma` | compared with MoSQITo (its source) | Newly released project, not yet seen to be widely used. |

Also available through tools that call one of these implementations: [rota-order](https://zhenxianli.github.io/LISQM/projects/rota-order.html) (via sottek-hearing-model, ECMA-418-2:2025 (4th ed.)), [pySQAT](https://zhenxianli.github.io/LISQM/projects/pysqat.html) (via sottek-hearing-model, ECMA-418-2:2025 (4th ed.)), and [PsychoBox](https://zhenxianli.github.io/LISQM/projects/psychobox.html) (via MoSQITo, ECMA-418-2:2022 (2nd ed.)).

**See also:** [Roughness, Daniel & Weber model](https://zhenxianli.github.io/LISQM/metrics/roughness-daniel-weber.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.

- **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)**, ECMA-418-2:2025 (4th ed.): compared with ArtemiS SUITE (HEAD acoustics)
  - Ported or adapted from [refmap-psychoacoustics](https://zhenxianli.github.io/LISQM/projects/refmap-psychoacoustics.html) (the author's own code).
  - Checked for the 4th edition for the dependence of the roughness of AM tones on modulation frequency, and against reference results from HEAD acoustics ArtemiS SUITE 17.1 (named in the source of SQAT's validation page) for a binaural recording of a train station.
- **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)**, ECMA-418-2:2024 (3rd ed.): compared with ArtemiS SUITE (HEAD acoustics)
  - Ported or adapted from [refmap-psychoacoustics](https://zhenxianli.github.io/LISQM/projects/refmap-psychoacoustics.html) (the author's own code).
  - Checked for the dependence of the roughness of AM tones on modulation frequency, and against reference results from HEAD acoustics ArtemiS SUITE 15.7 (named in the source of SQAT's validation page) for a binaural recording of a train station.
- **[MoSQITo](https://zhenxianli.github.io/LISQM/projects/mosqito.html)**, ECMA-418-2:2022 (2nd ed.): standard or paper data; also compared with ArtemiS SUITE (HEAD acoustics)
  - A unit test checks the standard's reference signal (1 kHz tone, 100 % amplitude-modulated at 70 Hz, 60 dB), which should give 1 asper, within ±0.1 asper.
  - A validation script compares the specific roughness of amplitude-modulated tones (carriers from 125 Hz to 4 kHz, 65 dB) with values computed in HEAD acoustics ArtemiS SUITE, within ±10 %.
- **[sottek-hearing-model](https://zhenxianli.github.io/LISQM/projects/sottek-hearing-model.html)**, ECMA-418-2:2025 (4th ed.): standard or paper data (reference signal and one recording); also compared with ArtemiS SUITE (HEAD acoustics)
  - Ported or adapted from [refmap-psychoacoustics](https://zhenxianli.github.io/LISQM/projects/refmap-psychoacoustics.html) (the author's own code).
  - Unit tests check the standard's reference signal, which should give 1 asper_HMS, at 48 and 44.1 kHz.
  - RefMap's verification against ArtemiS v17.1, as for loudness.
  - **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.
- [refmap-psychoacoustics](https://zhenxianli.github.io/LISQM/projects/refmap-psychoacoustics.html), ECMA-418-2:2025 (4th ed.): compared with ArtemiS SUITE (HEAD acoustics)
  - Verified against HEAD acoustics ArtemiS v17.1 with the same three signals as loudness.
- [MetaSona](https://zhenxianli.github.io/LISQM/projects/metasona.html), ECMA-418-2:2025 (4th ed.): compared with **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)** (its source)
  - Ported or adapted from **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)**. It was compared with the code it was ported from, which checks the port only.
  - The project says that detailed validation and reference comparisons are kept outside the repository; the results are not published.
- [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 70 Hz (60 dB SPL) gives 0.9999987 asper for 10 s (the test allows 1e-4 around 1), and the average specific roughness in band 17 is 0.37348, against 0.374 from ArtemiS v17 as quoted in the tests of sottek-hearing-model.
  - Against sottek-hearing-model run as an oracle on three signals (the calibration tone, noise and a mixture of modulated tones and noise), the time-dependent values differ by at most 2e-5 asper and the single values by at most 2e-5; the README traces the residual to the rounded filter coefficients.
  - The tests also check that two identical channels give the mono result and that input at 44.1 kHz gives the 48 kHz result within 0.2 %.
- [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.
- [rota-order](https://zhenxianli.github.io/LISQM/projects/rota-order.html) (via sottek-hearing-model), ECMA-418-2:2025 (4th ed.): own tests only
  - Tests, which run only where sottek-hearing-model is installed (the project's continuous integration does not install it), check that the wrapper returns what a direct call of the package gives.
- [Mosqito.NET](https://zhenxianli.github.io/LISQM/projects/mosqito-net.html), ECMA-418-2:2022 (2nd ed.): 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.
  - Every public function is compared with the output of Python MoSQITo for seven WAV files (three of them ISO 532-1 test signals), within 1 % (0.5 dB for levels); MoSQITo's unit tests are ported too.
- [pySQAT](https://zhenxianli.github.io/LISQM/projects/pysqat.html) (via sottek-hearing-model), ECMA-418-2:2025 (4th ed.): compared with **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)** (also ported from [refmap-psychoacoustics](https://zhenxianli.github.io/LISQM/projects/refmap-psychoacoustics.html))
  - Code ported from the same source is expected to agree, so that comparison is not an independent check.
  - Compared by `validation/FINAL_VAL.py` with the bundled SQAT v1.3 MATLAB code, which follows ECMA-418-2:2024 (3rd edition), so the comparison crosses editions.

Not stated by PsychoBox.

## Before you compare numbers

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

- **Edition.** Compare implementations of the same edition: MoSQITo, Mosqito.NET and tools that call MoSQITo follow the 2nd edition, the others the 3rd or 4th.
- **Overall value.** The single value is the 90th percentile of the time-dependent roughness after the first 320 ms. NumPy's percentile (sottek-hearing-model) and MATLAB's `prctile` (RefMap, SQAT) interpolate differently, so single values can differ slightly.
- **Calibration and time grid.** SQAT uses a slightly adjusted calibration factor and a time grid that ends at the signal duration; MetaSona uses the standard's nominal factor (0.0180685) and its 20 ms grid.
- **Binaural.** Two channels can be combined into one binaural value; per-channel and combined values differ.

What the projects state:

- **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)**: The single value is the 90th percentile from MATLAB's `prctile`, which interpolates; the other statistics take the nearest rank (`get_exceeded_value`). The first `time_skip` seconds are left out; the code enforces at least 320 ms (it cites ECMA-418-2:2025, Section 7.1.8).
- **[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.
- [MetaSona](https://zhenxianli.github.io/LISQM/projects/metasona.html): Expects calibrated sound pressure in pascals. The C functions require 48 kHz input; the Python interface resamples other rates to 48 kHz (SciPy `resample_poly`). `time_skip_s` (default 0 s) leaves out the start of the signal from the reported frames; the computation still runs over the whole signal. Time-varying results include every complete frame, labelled at frame centres, which differs from SQAT's handling of the last frame and of time stamps.
- [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.
- [rota-order](https://zhenxianli.github.io/LISQM/projects/rota-order.html): For the ECMA-418-2 metrics, `vs_rpm` takes by default the mean of the loudness and the tonality in each speed bin, the tonality only above 0.02 tu_HMS, and the 90th percentile of the roughness, after about 0.3 s (0.6 s for SQAT's tonality). Input in any unit is turned into sound pressure in Pa by an explicit calibration factor and resampled to 48 kHz.
- [Mosqito.NET](https://zhenxianli.github.io/LISQM/projects/mosqito-net.html): Time-varying loudness and ECMA-418-2 roughness resample input at any other rate to 48 kHz, and stationary loudness resamples rates below 48 kHz; MoSQITo rejects rates above 48 kHz for time-varying loudness.

## References

1. ECMA-418-2:2020 (1st ed.). Psychoacoustic metrics for ITT equipment — Part 2 (models based on human perception). https://ecma-international.org/wp-content/uploads/ECMA-418-2_1st_edition_december_2020.pdf
2. ECMA-418-2:2022 (2nd ed.). Psychoacoustic metrics for ITT equipment — Part 2 (models based on human perception). https://ecma-international.org/wp-content/uploads/ECMA-418-2_2nd_edition_december_2022.pdf
3. ECMA-418-2:2024 (3rd 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_3rd_edition_december_2024.pdf
4. 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
