soundlevelmeter
An IEC 61672-1 and IEC 61260-1 compliant sound level meter in Python. Measures LAeq, LCeq, LZeq, LASmax, LAFmax, octave-band levels (1/1, 1/3, 1/6, …), sound exposure levels (LE), and more — from WAV files, a numpy array or a live microphone.
Features
- Broadband metrics — A/C/Z frequency weighting; Fast/Slow/Impulse time weighting; Leq, max, min, sound exposure level, and moving-window variants.
- Octave-band analysis (RTA) — arbitrary N/M-octave filter banks (1/1, 1/3, 1/6, …) per IEC 61260-1.
- Any source — WAV files, an in-memory NumPy array or a live audio device.
- Standards-based — filters and weightings verified against the IEC 61672-1 / 61260-1
conformance limits (
scripts/conformance_report.py). - Three ways to drive it — a command-line tool, an interactive REPL, and a Python API.
Installation
git clone https://github.com/ninoblumer/python-soundlevelmeter
cd python-soundlevelmeter
python -m venv venv
source venv/bin/activate # macOS / Linux
# venv\Scripts\activate # Windows
pip install -r requirements.txt
To use slm as a shell command instead, you can install this tool directly. For example with
pip install --user git+https://github.com/ninoblumer/python-soundlevelmeter.git@main
Quickstart
Measure a recorded WAV file:
# calibrate from a recording of a calibration tone
$ python -m slm --file calibration.wav -- calibrate
Sensitivity: 17.68 mV | -35.05 dBV
$ python -m slm --file recording.wav --sensitivity-dbv -35.05 --measure LAeq LAFmax LCeq LZeq:bands:63-8000
Broadband results land in output/measurement_report.csv (and a per-dt _log.csv); per-band
results in output/measurement_rta_report.csv. See Getting started
for live input, the REPL, sensitivity flags, and every option.
Documentation
Full documentation lives in docs/:
| Guide | What it covers |
|---|---|
| Getting started | CLI usage, live input, the generator, the interactive REPL |
| Metric name syntax | How to name quantities (LAeq, LAFmax_dt, LZeq:bands:63-8000, …) |
| Calibration | Deriving controller sensitivity from a calibrator tone |
| Signal conditioning | The XL2-style input filter (--signal-conditioning) |
| Configuration | TOML config schema for reproducible runs |
| Python API | High-, mid-, and low-level library entry points |
| Architecture | Controller → Engine → Bus → plugins → meters → Reporter |
| Running the tests | pytest, slow tests, the conformance margin report |
| Real-time load benchmark | Measuring CPU headroom against the real-time budget |
License
This project is licensed under the GNU General Public License v3.0.
See LICENSE for full details and NOTICE for third-party attributions.
Metadata
Release files for soundlevelmeter 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| soundlevelmeter-1.0.0.tar.gz | 91.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| soundlevelmeter-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 181.9 kB
Release files / soundlevelmeter-1.0.0.tar.gz
| Download URL | soundlevelmeter-1.0.0.tar.gz |
|---|---|
| Size | 91.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9fbad5ce62f285fbabb59561388ab840d52adb10d157147dfc5f3584dbe1e404
|
|
BLAKE2b-256 checksum How to use checksums |
47de2ea05a6a50cce4f95e01cfee883d008e9657b01c223aff0c1b06b320c5a8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 9, 2026.
Transparency logRelease files / soundlevelmeter-1.0.0-py3-none-any.whl
| Download URL | soundlevelmeter-1.0.0-py3-none-any.whl |
|---|---|
| Size | 90.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bf0ddeb0d988c8016a365655b5c8062ad9fb80990c7d7bc702d6e731b9aa8900
|
|
BLAKE2b-256 checksum How to use checksums |
45abcc32bddb97238ad7d779701c9301973122772cd29f49801c43ec46548f7e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 9, 2026.
Transparency log