# Fluctuation strength, Osses et al. model and Fastl & Zwicker formula

> 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-osses.html

**Quantity:** Fluctuation strength · **Unit:** vacil · **Also known as:** fluctuation strength, vacil, Osses 2016, Fastl and Zwicker fluctuation strength

Fluctuation strength describes slow modulation around 4 Hz. Osses, García & Kohlrausch (2016) proposed a signal-based model; Fastl & Zwicker give a closed-form expression for modulated tones and noises. Neither is standardised. ECMA-418-2:2025 added a hearing-model method, listed on its own page.

There is no standard; the reference model is Osses et al. (2016). Open-source implementations of it: **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)** (MATLAB), [phonometry](https://zhenxianli.github.io/LISQM/projects/phonometry.html) (Python; newly released, not yet seen to be widely used), [PsychoacousticMetrics.jl](https://zhenxianli.github.io/LISQM/projects/psychoacousticmetrics-jl.html) (Julia; newly released, not yet seen to be widely used), [pySQAT](https://zhenxianli.github.io/LISQM/projects/pysqat.html) (Python; developing), and [fluctuation-strength-TUe](https://zhenxianli.github.io/LISQM/projects/fluctuation-strength-tue.html) (MATLAB; legacy, no commit since 2020-01). Implementations of earlier editions or related models: [phonometry](https://zhenxianli.github.io/LISQM/projects/phonometry.html) (Python; newly released, not yet seen to be widely used; Fastl & Zwicker (2007); closed-form expression for amplitude-modulated noise) and [PsychoacousticParametersMeasurer](https://zhenxianli.github.io/LISQM/projects/psychoacoustic-parameters-measurer.html) (Python; legacy, no commit since 2021-06; Fastl & Zwicker (2007); Zwicker & Fastl formula).

## Editions and who implements them

| Date | Edition | Status | What changed | Implemented by |
|---|---|---|---|---|
| 2016 | [Osses et al. (2016)](https://doi.org/10.1121/2.0000410) | published | Signal-based model. | **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)**, [phonometry](https://zhenxianli.github.io/LISQM/projects/phonometry.html), [PsychoacousticMetrics.jl](https://zhenxianli.github.io/LISQM/projects/psychoacousticmetrics-jl.html), [pySQAT](https://zhenxianli.github.io/LISQM/projects/pysqat.html), [fluctuation-strength-TUe](https://zhenxianli.github.io/LISQM/projects/fluctuation-strength-tue.html) |
| 2007 | [Fastl & Zwicker (2007)](https://doi.org/10.1007/978-3-540-68888-4) | published | Closed-form expression for amplitude- and frequency-modulated sounds. | [phonometry](https://zhenxianli.github.io/LISQM/projects/phonometry.html), [PsychoacousticParametersMeasurer](https://zhenxianli.github.io/LISQM/projects/psychoacoustic-parameters-measurer.html) |

## Project map

The lines of the project map for fluctuation strength (Osses et al.) 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)**: [pySQAT](https://zhenxianli.github.io/LISQM/projects/pysqat.html) (Osses et al. (2016))

### The author's own code

- From [fluctuation-strength-TUe](https://zhenxianli.github.io/LISQM/projects/fluctuation-strength-tue.html) (Alejandro Osses): **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)** (Osses et al. (2016))

### Results checked against another project

- [phonometry](https://zhenxianli.github.io/LISQM/projects/phonometry.html) against **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)** (Osses et al. (2016))
- [PsychoacousticMetrics.jl](https://zhenxianli.github.io/LISQM/projects/psychoacousticmetrics-jl.html) against **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)** (Osses et al. (2016))

On the map without a line, as no relation to another project listed for fluctuation strength (Osses et al.) is recorded for them: [PsychoacousticParametersMeasurer](https://zhenxianli.github.io/LISQM/projects/psychoacoustic-parameters-measurer.html).

## Implementations

| Project | Language | Edition | Functions | Validation (as stated) | Notes |
|---|---|---|---|---|---|
| **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)** | MATLAB | [Osses et al. (2016)](https://doi.org/10.1121/2.0000410) (since v1.0) | `FluctuationStrength_Osses2016`, `FluctuationStrength_Osses2016_from_wavfile` | 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. |
| [phonometry](https://zhenxianli.github.io/LISQM/projects/phonometry.html) | Python | [Osses et al. (2016)](https://doi.org/10.1121/2.0000410) (since 3.1.0) | `fluctuation_strength` | standard or paper data; also compared with SQAT | Newly released project, not yet seen to be widely used. |
| [PsychoacousticMetrics.jl](https://zhenxianli.github.io/LISQM/projects/psychoacousticmetrics-jl.html) | Julia | [Osses et al. (2016)](https://doi.org/10.1121/2.0000410) (since 0.3.0) | `fluctuation_strength_osses` | reference code: SQAT | Newly released project, not yet seen to be widely used. |
| [phonometry](https://zhenxianli.github.io/LISQM/projects/phonometry.html) | Python | [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` | standard or paper data | Newly released project, not yet seen to be widely used. |
| [pySQAT](https://zhenxianli.github.io/LISQM/projects/pysqat.html) | Python | [Osses et al. (2016)](https://doi.org/10.1121/2.0000410) | `FluctuationStrength_Osses2016` | compared with SQAT (its source) | Developing project: no publication or documented use by others. No licence file: by default, copying, changing or sharing the code needs the author's permission. |
| [fluctuation-strength-TUe](https://zhenxianli.github.io/LISQM/projects/fluctuation-strength-tue.html) | MATLAB | [Osses et al. (2016)](https://doi.org/10.1121/2.0000410) (since 1.0) | `FluctuationStrength_TUe` | standard or paper data | Legacy project, no longer maintained. No licence file: by default, copying, changing or sharing the code needs the author's permission. |
| [PsychoacousticParametersMeasurer](https://zhenxianli.github.io/LISQM/projects/psychoacoustic-parameters-measurer.html) | Python | [Fastl & Zwicker (2007)](https://doi.org/10.1007/978-3-540-68888-4) (Zwicker & Fastl formula) | `acousticFluctuation`, `fmoddetection` | not stated | Legacy project, no longer maintained. No licence file: by default, copying, changing or sharing the code needs the author's permission. The header cites Zwicker & Fastl, "Psychoacoustics: Facts and Models", without naming an edition. |

**See also:** [Fluctuation strength from the Sottek Hearing Model (ECMA-418-2)](https://zhenxianli.github.io/LISQM/metrics/fluctuation-strength-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)**, 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.
- [phonometry](https://zhenxianli.github.io/LISQM/projects/phonometry.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.
- [PsychoacousticMetrics.jl](https://zhenxianli.github.io/LISQM/projects/psychoacousticmetrics-jl.html), Osses et al. (2016): reference code: **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)**
  - Cross-checked against SQAT's `FluctuationStrength_Osses2016`, run under Octave, on identical signals: 26 cases, including all 18 points of Fastl & Zwicker's AM/FM reference grid (Osses 2018 thesis, Table B.1), each reproduced to a relative tolerance of 1e-6 (measured 3e-9).
  - The grid stimuli are synthesised following the Osses et al. (2016) validation files that SQAT's own validation reads; the tests also check that each synthetic stimulus gives the value SQAT gives on the real file (tones to 5e-3, noise to 25 % across random draws).
  - Against the published curves, 11 of the 18 points are within 30 %, and exactly those 11 are gated. The other seven are misses of the reference model itself (FM tones with a modulation frequency above 4 Hz overestimated three- to fourfold, thesis §B.4.1; the shoulder and tail points of AM tones and noise), which SQAT's own validation figures also show.
- [phonometry](https://zhenxianli.github.io/LISQM/projects/phonometry.html), Fastl & Zwicker (2007): standard or paper data
  - A conformance row checks Eq. (10.2) of Fastl & Zwicker for amplitude-modulated broadband noise.
- [pySQAT](https://zhenxianli.github.io/LISQM/projects/pysqat.html), Osses et al. (2016): 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.
  - Compared with SQAT v1.3, run in MATLAB, by `validation/FINAL_VAL.py`; the generated reports are not committed.
- [fluctuation-strength-TUe](https://zhenxianli.github.io/LISQM/projects/fluctuation-strength-tue.html), Osses et al. (2016): standard or paper data
  - `demos/demo_osses2016a.m` reproduces the figures of the paper with the included stimuli (AM and FM tones, AM noise and excerpts of real sounds).

Not stated by PsychoacousticParametersMeasurer.

## Before you compare numbers

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

- **Sample rate.** The model's envelope filters exist for 44.1 and 48 kHz: SQAT resamples other rates, PsychoacousticMetrics.jl rejects them.
- **Steady sounds.** The model is meant for modulated sounds; a steady tone does not give exactly zero (phonometry reports about 0.09 vacil for a 1 kHz tone).

What the projects state:

- **[SQAT](https://zhenxianli.github.io/LISQM/projects/sqat.html)**: 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.
- [PsychoacousticMetrics.jl](https://zhenxianli.github.io/LISQM/projects/psychoacousticmetrics-jl.html): Needs audio at 44.1 or 48 kHz (an error otherwise); SQAT resamples other rates itself.

## References

1. Fastl, H., & Zwicker, E. (2007). *Psychoacoustics: Facts and models* (3rd ed.). Springer. https://doi.org/10.1007/978-3-540-68888-4
2. Osses Vecchi, A., García León, R., & Kohlrausch, A. (2016). Modelling the sensation of fluctuation strength. *Proceedings of Meetings on Acoustics*, 28, 050005. https://doi.org/10.1121/2.0000410
