Python bindings for libloudness, for calculating integrated loudness in LUFS (ITU BS.1770 / EBU R 128)
Project Links
Meta
Author: Magnus Bro Kolstø, Iver Jordal
Requires Python: >=3.10
Classifiers
loudness
A Python package (battle-tested C++ under the hood) for calculating integrated loudness (LUFS) with the ITU BS.1770 loudness algorithm. Useful for EBU R 128 compliance. Takes NumPy arrays as input (supports mono and stereo/multichannel). Based on libloudness (original implementation by Magnus Bro Kolstø, Nomono).
Installation
pip install loudness
Usage example
import soundfile as sf
import loudness
audio, sr = sf.read("audio.wav", dtype="float32") # shape (samples, channels)
lufs = loudness.integrated_loudness(audio, sr)
print(f"{lufs:.2f} LUFS")
Performance
loudness is significantly faster than the alternatives when running on CPU:

Changelog
[0.2.0] - 2025-12-26
Added
- Add support for Python 3.14
Removed
- Remove support for Python 3.9
For the complete changelog, go to CHANGELOG.md
Development setup
- Install CMake and a C++ compiler
pip install numpy pybind11 build scikit-build-corepython -m build --wheel- Install the built wheel
pytest
Alternatives (Python)
| Name | Github stars | License | Last commit |
|---|---|---|---|
| jaxloudnorm | |||
| loudness | |||
| PALA | |||
| pyebur128 | |||
| pyloudness | |||
| pyloudnorm | |||
| torchaudio |
Wheel compatibility matrix
Files in release
loudness-0.2.0-cp310-cp310-macosx_11_0_arm64.whl (94.3KiB)
loudness-0.2.0-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (107.1KiB)
loudness-0.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (116.5KiB)
loudness-0.2.0-cp310-cp310-musllinux_1_2_aarch64.whl (1.0MiB)
loudness-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl (1.1MiB)
loudness-0.2.0-cp310-cp310-win_amd64.whl (96.0KiB)
loudness-0.2.0-cp311-cp311-macosx_11_0_arm64.whl (95.7KiB)
loudness-0.2.0-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (108.4KiB)
loudness-0.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (118.6KiB)
loudness-0.2.0-cp311-cp311-musllinux_1_2_aarch64.whl (1.0MiB)
loudness-0.2.0-cp311-cp311-musllinux_1_2_x86_64.whl (1.1MiB)
loudness-0.2.0-cp311-cp311-win_amd64.whl (96.8KiB)
loudness-0.2.0-cp312-cp312-macosx_11_0_arm64.whl (95.9KiB)
loudness-0.2.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (108.9KiB)
loudness-0.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (118.5KiB)
loudness-0.2.0-cp312-cp312-musllinux_1_2_aarch64.whl (1.0MiB)
loudness-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl (1.1MiB)
loudness-0.2.0-cp312-cp312-win_amd64.whl (97.7KiB)
loudness-0.2.0-cp313-cp313-macosx_11_0_arm64.whl (95.9KiB)
loudness-0.2.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (110.3KiB)
loudness-0.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (118.3KiB)
loudness-0.2.0-cp313-cp313-musllinux_1_2_aarch64.whl (1.0MiB)
loudness-0.2.0-cp313-cp313-musllinux_1_2_x86_64.whl (1.1MiB)
loudness-0.2.0-cp313-cp313-win_amd64.whl (97.7KiB)
loudness-0.2.0-cp314-cp314-macosx_11_0_arm64.whl (96.2KiB)
loudness-0.2.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (110.4KiB)
loudness-0.2.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (118.4KiB)
loudness-0.2.0-cp314-cp314-musllinux_1_2_aarch64.whl (1.0MiB)
loudness-0.2.0-cp314-cp314-musllinux_1_2_x86_64.whl (1.1MiB)
loudness-0.2.0-cp314-cp314-win_amd64.whl (99.8KiB)
loudness-0.2.0.tar.gz (748.6KiB)
Extras:
None
Dependencies:
numpy
(<3,>=1.22)