# SQAT

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

MATLAB toolbox for sound quality analysis that bundles most psychoacoustic metrics in one place: ISO 532-1 and ECMA-418-2 loudness, DIN 45692 sharpness, Daniel & Weber and ECMA-418-2 roughness, Osses fluctuation strength, Aures and ECMA-418-2 tonality, three psychoacoustic annoyance models (Widmann's, which SQAT also offers under its common attribution to Zwicker & Fastl; More; Di et al.) and EPNL. Every metric except the annoyance models has its own verification routine. Since v2.0 it also has a graphical interface.

- **Repository:** https://github.com/ggrecow/SQAT
- **Documentation:** https://github.com/ggrecow/SQAT#readme
- **Language:** MATLAB
- **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:** established (Described in a publication, used by others, or written by the authors of the model, with more than a year of history. A widely used project.)
- **Licence:** GPL-3.0-or-later — Since v2.0 (2026-10-15) the releases, like the default branch since 2026-09-15, are GPL-3.0-or-later, with BSD-3-Clause (ISO 532-1 loudness), MIT (Daniel & Weber roughness and nine utilities) and CC0-1.0 (colour maps) exceptions. Every release up to and including v1.3 is CC-BY-NC-4.0 (non-commercial) at repository level, while 21 metric files in v1.3 carry BSD-style notices and the ECMA-418-2 files say GPL-3.0.
- **Latest release:** v2.0 (2026-10)
- **Last commit:** 2026-10-15 (active)
- **GitHub stars:** 100
- **Maintainers:** Gil Felix Greco, Roberto Merino-Martínez, Alejandro Osses, Mike Lotinga
- **AI assistance:** disclosed — At v2.0, header comments in 44 files (24 of them in the graphical interface) say that changes or code written from August to October 2026 were assisted by Claude (Anthropic) and verified by the authors; 132 commits carry AI co-author trailers. Neither the README nor the v2.0 release notes have an AI statement.
- **Paper:** Felix Greco, G., Merino-Martínez, R., Osses, A., & Langer, S. C. (2023). SQAT: a MATLAB-based toolbox for quantitative sound quality analysis. *Proceedings of INTER-NOISE 2023*, Chiba, Japan. https://doi.org/10.3397/IN_2023_1075
- **How to cite:** The README asks for the toolbox itself: Felix Greco, G., Merino-Martínez, R., Osses, A., & Lotinga, M. J. B. (2026). *SQAT: a sound quality analysis toolbox for MATLAB*. Zenodo. It recommends citing the specific version used, since results differ between releases; each release has its own DOI (for v2.0, `citation.cff` gives 10.5281/zenodo.23387628). The paper above describes the first release. Software DOI: [10.5281/zenodo.7934709](https://doi.org/10.5281/zenodo.7934709). The repository has a [CITATION.cff](https://github.com/ggrecow/SQAT/blob/main/citation.cff) file. Name the version or commit you used.
- **Entry checked:** 2026-10-19

## 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 v1.0) | `Loudness_ISO532_1`, `Loudness_ISO532_1_from_wavfile` | available | standard or paper data | v2.0 corrects the time-varying procedure (PR #48) and the `time_skip` handling of the stationary procedure; results differ from v1.x. |
| [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) (since v2.0) | `Loudness_ECMA418_2`, `LoudnessFromComp_ECMA418_2` | available | compared with ArtemiS SUITE (HEAD acoustics) | Updated to the 4th edition in 2025. |
| [Sottek Hearing Model loudness](https://zhenxianli.github.io/LISQM/metrics/loudness-ecma-418-2.html) | [ECMA-418-2:2024 (3rd ed.)](https://ecma-international.org/wp-content/uploads/ECMA-418-2_3rd_edition_december_2024.pdf) (mono or two channels with binaural combination; since v1.3) | `Loudness_ECMA418_2`, `LoudnessFromComp_ECMA418_2` | available | compared with ArtemiS SUITE (HEAD acoustics) | In v1.3; v2.0 follows the 4th edition. |
| [Sharpness](https://zhenxianli.github.io/LISQM/metrics/sharpness.html) | [DIN 45692:2009](https://www.dinmedia.de/en/standard/din-45692/117635111) (DIN 45692 weighting, plus von Bismarck and Aures options; since v1.0) | `Sharpness_DIN45692`, `Sharpness_DIN45692_from_loudness`, `Sharpness_DIN45692_from_wavfile` | available | standard or paper data | — |
| [Roughness (Daniel & Weber)](https://zhenxianli.github.io/LISQM/metrics/roughness-daniel-weber.html) | [Daniel & Weber (1997)](https://zhenxianli.github.io/LISQM/standards.html#ref-daniel-weber-1997) (since v1.0) | `Roughness_Daniel1997`, `Roughness_Daniel1997_from_wavfile` | available | standard or paper data | The v1.x code is AARAE's `roughnessDW.m` (Dik Hermes's code), adapted and verified for SQAT in 2023. v2.0 rewrites it (PR #65, 2026-09-08) with corrections from revised code that Dik Hermes sent to the SQAT team in 2025: 63 of 119 validation values go up and 56 down (largest change 0.155 asper). |
| [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) (since v2.0) | `Roughness_ECMA418_2` | available | compared with ArtemiS SUITE (HEAD acoustics) | Amended to the 4th edition in November 2025. |
| [Sottek Hearing Model roughness](https://zhenxianli.github.io/LISQM/metrics/roughness-ecma-418-2.html) | [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` | available | compared with ArtemiS SUITE (HEAD acoustics) | In v1.3; v2.0 follows the 4th edition. |
| [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 v1.0) | `FluctuationStrength_Osses2016`, `FluctuationStrength_Osses2016_from_wavfile` | available | standard or paper data | Alejandro Osses's `FluctuationStrength_TUe.m` (TU/e, 2014–2016), taken into SQAT in 2020 and modified there by Osses since 2023. |
| [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) | `FluctuationStrength_ECMA418_2` | PR | not stated | Open pull request since 2026-09-17. |
| [Tonality (Aures)](https://zhenxianli.github.io/LISQM/metrics/tonality-aures.html) | [Aures (1985b)](https://zhenxianli.github.io/LISQM/standards.html#ref-aures-1985-euphony) (since v1.0) | `Tonality_Aures1985`, `Tonality_Aures1985_from_wavfile` | available | standard or paper data | v2.0 fixes eight defects (issue #67; for example, only one tonal component's level excess entered the result, and tones were removed from the wrong spectrum), so results differ from v1.x. |
| [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) (since v2.0) | `Tonality_ECMA418_2` | available | compared with ArtemiS SUITE (HEAD acoustics) | — |
| [Sottek Hearing Model tonality](https://zhenxianli.github.io/LISQM/metrics/tonality-ecma-418-2.html) | [ECMA-418-2:2024 (3rd ed.)](https://ecma-international.org/wp-content/uploads/ECMA-418-2_3rd_edition_december_2024.pdf) (since v1.3) | `Tonality_ECMA418_2` | available | compared with ArtemiS SUITE (HEAD acoustics) | In v1.3; v2.0 follows the 4th edition. |
| [Psychoacoustic annoyance](https://zhenxianli.github.io/LISQM/metrics/psychoacoustic-annoyance.html) | [Di et al. (2016)](https://doi.org/10.1016/j.apacoust.2015.12.006) (since v1.0) | `PsychoacousticAnnoyance_Di2016`, `PsychoacousticAnnoyance_Di2016_from_percentile` | available | not stated | — |
| [Psychoacoustic annoyance](https://zhenxianli.github.io/LISQM/metrics/psychoacoustic-annoyance.html) | [More (2010)](https://docs.lib.purdue.edu/dissertations/AAI3453255) (since v1.0) | `PsychoacousticAnnoyance_More2010`, `PsychoacousticAnnoyance_More2010_from_percentile` | 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 v1.0) | `PsychoacousticAnnoyance_Zwicker1999`, `PsychoacousticAnnoyance_Zwicker1999_from_percentile` | available | not stated | Since v2.0 a wrapper of `PsychoacousticAnnoyance_Widmann1992`, which its header says will be removed in future releases. |
| [Psychoacoustic annoyance](https://zhenxianli.github.io/LISQM/metrics/psychoacoustic-annoyance.html) | [Widmann (1992)](https://zhenxianli.github.io/LISQM/standards.html#ref-widmann-1992) (since v2.0) | `PsychoacousticAnnoyance_Widmann1992`, `PsychoacousticAnnoyance_Widmann1992_from_percentile` | available | not stated | Added in June 2025 (PR #32); the README describes it as the same model as the Zwicker & Fastl entry under its original attribution. |
| [Perceived noise level and EPNL](https://zhenxianli.github.io/LISQM/metrics/epnl.html) | [14 CFR Part 36](https://www.ecfr.gov/current/title-14/chapter-I/subchapter-C/part-36) (since v1.1) | `EPNL_FAR_Part36`, `get_PNL`, `get_PNLT`, `get_Duration_Correction` | available | compared with published EPNL values (Rizzi et al., 2020) | Follows Amendment 36-26 (2005). |

## 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 [AARAE](https://zhenxianli.github.io/LISQM/projects/aarae.html).
  - Checked with the 25 test signals of Annex B.2–B.5 against the standard's tolerances.
  - For v2.0, the validation notes say that the maximum loudness and N5 of the time-varying test signals are close to the reference values, apart from offsets in the N5 of test signals 12 and 13 that they trace to the standard's reference spreadsheet. In v1.3, test signal 10 deviated by 18.14 % (PR #48).
- [Sottek Hearing Model loudness](https://zhenxianli.github.io/LISQM/metrics/loudness-ecma-418-2.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 against the ISO 226:2003 equal-loudness contours 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 (last checked in November 2025).
- [Sottek Hearing Model loudness](https://zhenxianli.github.io/LISQM/metrics/loudness-ecma-418-2.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 against the ISO 226:2003 equal-loudness contours 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.
- [Sharpness](https://zhenxianli.github.io/LISQM/metrics/sharpness.html), DIN 45692:2009: standard or paper data
  - Checked with the narrowband and broadband test signals of DIN 45692.
- [Roughness (Daniel & Weber)](https://zhenxianli.github.io/LISQM/metrics/roughness-daniel-weber.html), Daniel & Weber (1997): standard or paper data
  - Ported or adapted from [AARAE](https://zhenxianli.github.io/LISQM/projects/aarae.html).
  - Checked against amplitude- and frequency-modulation dependences from the literature.
- [Sottek Hearing Model roughness](https://zhenxianli.github.io/LISQM/metrics/roughness-ecma-418-2.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.
- [Sottek Hearing Model roughness](https://zhenxianli.github.io/LISQM/metrics/roughness-ecma-418-2.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.
- [Fluctuation strength (Osses et al.)](https://zhenxianli.github.io/LISQM/metrics/fluctuation-strength-osses.html), Osses et al. (2016): standard or paper data
  - Ported or adapted from [fluctuation-strength-TUe](https://zhenxianli.github.io/LISQM/projects/fluctuation-strength-tue.html) (the author's own code).
  - Checked against amplitude- and frequency-modulation dependences from the literature.
- [Tonality (Aures)](https://zhenxianli.github.io/LISQM/metrics/tonality-aures.html), Aures (1985b): standard or paper data
  - v2.0 has five validation scripts: a tone emerging from noise, compared with Fig. 1(a) of Hastings et al. (2003) (root mean square deviation 0.0129 t.u. over nine points); the extraction of tonal components and the level excess, compared with the intermediate values of an independent implementation (Zhang & Shrestha, 2003); the weightings of bandwidth and frequency, compared with Aures's Figs. 6 and 5; and the dependence on bandwidth, compared with Hastings's subjective data.
  - v1.3 is checked with one signal-to-noise comparison.
- [Sottek Hearing Model tonality](https://zhenxianli.github.io/LISQM/metrics/tonality-ecma-418-2.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 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.
  - A verification against Annex B.2 (PR #79) was merged and reverted on 2026-09-21 because the Annex B values of the 2025 edition appear to be out of date.
- [Sottek Hearing Model tonality](https://zhenxianli.github.io/LISQM/metrics/tonality-ecma-418-2.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 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.
- [Psychoacoustic annoyance](https://zhenxianli.github.io/LISQM/metrics/psychoacoustic-annoyance.html), Di et al. (2016); [Psychoacoustic annoyance](https://zhenxianli.github.io/LISQM/metrics/psychoacoustic-annoyance.html), More (2010): not stated
  - No verification routine (README).
- [Perceived noise level and EPNL](https://zhenxianli.github.io/LISQM/metrics/epnl.html), 14 CFR Part 36: compared with published EPNL values (Rizzi et al., 2020)
  - The README says that no reference implementation or test signals exist, so the verification is partial.
  - Perceived noisiness is checked at its definition (a third-octave band of noise at 1 kHz and 40 dB SPL gives 1 noy), and the tone correction factor against Table 3.7 of ICAO Doc 9501.
  - EPNL is cross-checked with Table 4 of Rizzi et al. (2020), AIAA 2020-2582, for 15 flyover sounds (five cases auralised by three tools): the largest difference is about 0.6 EPNdB.

Not stated for Sottek Hearing Model fluctuation strength · ECMA-418-2:2025 (4th ed.); Psychoacoustic annoyance · Zwicker & Fastl (1999); Psychoacoustic annoyance · Widmann (1992).

## Before you compare numbers

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

- Statistics such as N5 take the nearest rank of the sorted time series, without interpolation (`get_exceeded_value`), and leave out the first `time_skip` seconds of the signal.
- Statistics take the nearest rank of the sorted time series, without interpolation (`get_exceeded_value`), and leave out the first `time_skip` seconds; the code enforces at least 304 ms (it cites ECMA-418-2:2025, Section 8.1.4).
- 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).


## Notes

- The README lists 61 studies and theses that use SQAT.
- v2.0 (2026-10-15) came about 330 commits after v1.3 (2025-04-04); its release notes mark the changes to the sound level meter, ISO 532-1 loudness, Daniel & Weber roughness, Aures tonality and the annoyance models as not backward compatible. Most of the metric-correctness work of August–September 2026, and the graphical interface, came from an external contributor through about 20 pull requests.
- The ECMA-418-2 functions come from the RefMap MATLAB code by Lotinga and Torjussen (University of Salford); the ISO 532-1 loudness was adapted in 2023 from Ella Manor's 2015 MATLAB code for AARAE.
- v2.0 adds a graphical interface, `SQAT_GUI.m` ([#84](https://github.com/ggrecow/SQAT/pull/84)). It loads calibrated .wav files, plays them with waveform and spectrogram, runs the sound level meter and any SQAT metric, compares files in a table of single values and exports the results. The README says every value comes from the SQAT functions, so the interface gives the same results as the code; it recommends the interface for a few files and the functions for many. The header of `SQAT_GUI.m` and the commit that added it say that its layout follows the interface of pySQAT; the commit lists a dBFS calibration field, a channel selector, a results table and the Widmann (1992) annoyance model as going beyond pySQAT.
- Open pull request: [#78](https://github.com/ggrecow/SQAT/pull/78) (ECMA-418-2 fluctuation strength).

## Before you rely on it

- Releases up to and including v1.3 are licensed for non-commercial use only; v2.0 is under the GPL.
- v2.0 is not backward compatible with v1.x. It corrects six deviations in ISO 532-1 time-varying loudness ([#48](https://github.com/ggrecow/SQAT/pull/48); test signal 10 deviated by 18.14 % in v1.3) and eight defects in Aures tonality ([#67](https://github.com/ggrecow/SQAT/issues/67)), rewrites Daniel & Weber roughness ([#65](https://github.com/ggrecow/SQAT/pull/65)), corrects the time weighting of the sound level meter ([#51](https://github.com/ggrecow/SQAT/pull/51); tone bursts with a duty cycle of 0.02 were reported 17.6 dB too low up to v1.3) and makes the annoyance calculation faster ([#42](https://github.com/ggrecow/SQAT/pull/42)). Results from v1.x and v2.0 differ.
- The README warns that `main` may contain changes that are not yet fully verified and recommends using a release.

## Sources

- https://github.com/ggrecow/SQAT/blob/main/README.md
- https://github.com/ggrecow/SQAT/blob/main/LICENSE
- https://github.com/ggrecow/SQAT/blob/main/citation.cff
- https://github.com/ggrecow/SQAT/releases
- https://github.com/ggrecow/SQAT/releases/tag/v2.0
- https://github.com/ggrecow/SQAT/issues/67
- https://github.com/ggrecow/SQAT/pull/48
- https://github.com/ggrecow/SQAT/pull/65
- https://github.com/ggrecow/SQAT/pull/78
- https://github.com/ggrecow/SQAT/pull/79
- https://github.com/ggrecow/SQAT/tree/v2.0/validation
- https://github.com/ggrecow/SQAT/blob/v2.0/validation/Loudness_ISO532_1/2_synthetic_signals_time_varying_loudness/README.md
- https://github.com/ggrecow/SQAT/blob/v2.0/validation/Tonality_Aures1985/README.md
- https://github.com/ggrecow/SQAT/blob/v2.0/validation/sound_level_meter/README.md
- https://github.com/ggrecow/SQAT/tree/main/validation/EPNL_FAR_Part36
- https://github.com/ggrecow/SQAT/tree/v1.3/validation
- https://github.com/ggrecow/SQAT/blob/main/psychoacoustic_metrics/FluctuationStrength_Osses2016/FluctuationStrength_Osses2016.m
- https://github.com/ggrecow/SQAT/blob/v2.0/psychoacoustic_metrics/Roughness_Daniel1997/Roughness_Daniel1997.m
- https://github.com/ggrecow/SQAT/blob/v2.0/psychoacoustic_metrics/PsychoacousticAnnoyance_Zwicker1999/PsychoacousticAnnoyance_Zwicker1999.m
- https://github.com/ggrecow/SQAT/blob/v2.0/gui/SQAT_GUI.m
- https://github.com/ggrecow/SQAT/pull/84
