Skip to main content

MetaSona

Psychoacoustic metrics in C, with a typed Python interface.

MetaSona packages compiled C implementations in a Python wheel to reduce computation time for repeated psychoacoustic analysis, while keeping a simple NumPy interface. The speed comes from the native implementation; the wheel makes that implementation easy to install.

Function Calculates Unit
stationary_loudness Zwicker loudness from audio sone
loudness_from_levels Zwicker loudness from 28 third-octave levels sone
time_varying_loudness Zwicker loudness over time sone
roughness_daniel_weber Daniel–Weber roughness asper
tonality_aures Aures tonality dimensionless
sharpness_din45692 Sharpness from specific loudness acum

The current version is experimental, particularly roughness and tonality. Standards conformance has not been established.

Roughness and tonality follow SQAT revision e6228b789fc9. Tonality uses 250 ms windows and 125 ms hops. MetaSona returns every complete frame with centre timestamps; see implementation credits and differences.

Computation time

Measured September 2026 with the SQAT-aligned MetaSona wheel. Median of five warmed calls for 10 s of 48 kHz audio (1 kHz carrier, 70 Hz AM plus noise, 60 dB SPL), Ryzen 9 5950X, Windows. MetaSona: MSVC Release; MoSQITo: 1.2.1; imports and audio I/O are excluded.

Metric MetaSona MoSQITo Speedup vs MoSQITo
Stationary loudness 0.090 s 0.220 s 2.4×
Time-varying loudness 0.233 s 17.092 s 73.5×
Roughness 1.448 s 22.754 s 15.7×
Aures tonality 0.572 s Not available —

These are workload timings; models and outputs differ. Native filtering and channel processing contribute to speed alongside FFTs; compiler and framing differences also affect timings.

Python

Requires Python 3.10–3.13 and a C11 compiler. From this checkout:

python -m pip install .

Or add the checkout to a uv project with uv add /path/to/metasona.

Pass calibrated mono pressure in pascals, not uncalibrated audio samples. Python accepts integer sample rates from 8 to 192 kHz and resamples to 48 kHz when needed. Results include their units and read-only NumPy arrays.

import numpy as np
import metasona as ms

# One second of a 1 kHz tone at 60 dB SPL (0.02 Pa RMS).
fs = 48_000
t = np.arange(fs) / fs
pressure_pa = np.sqrt(2) * 0.02 * np.sin(2 * np.pi * 1_000 * t)

loudness = ms.stationary_loudness(pressure_pa, fs, sound_field="free")
sharpness = ms.sharpness_din45692(loudness.specific_loudness_sone_per_bark)

print(f"Loudness: {loudness.loudness_sone:.3f} sone")
print(f"Sharpness: {sharpness.sharpness_acum:.3f} acum")

See the Python API and complete example.

C library

Requires CMake 3.21 or newer and a C11 compiler:

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release
cmake --install build --config Release --prefix install

Include <metasona/metasona.h> and link the installed CMake target MetaSona::metasona. Native signal functions require 48 kHz input. Use -DMS_BUILD_SHARED=OFF for a static library.

See the C API and C example.

License and credits

GPL-3.0 for the combined distribution, with retained Apache-2.0, BSD-3-Clause and MIT component notices. See third-party credits.

Acknowledgements

Developed during PhD research within the METAVISION MSCA Doctoral Network.

The European Commission is gratefully acknowledged for their support of the Horizon Europe DN METAVISION project (GA 101072415). Views and opinions expressed are however those of the authors only and do not necessarily reflect those of the European Union. The European Union cannot be held responsible for them.

Release files for metasona 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for metasona 0.1.0
File Size Uploaded
metasona-0.1.0.tar.gz 81.2 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for metasona 0.1.0
File
metasona-0.1.0-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
metasona-0.1.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl Python 3 none Linux glibc 2.17+ x86-64 Details
metasona-0.1.0-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl Python 3 none Linux glibc 2.17+ ARM64 Details
metasona-0.1.0-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details
metasona-0.1.0-py3-none-macosx_10_9_x86_64.whl Python 3 none macOS 10.9+ x86-64 Details

Total release size: 793.6 kB

Release files / metasona-0.1.0.tar.gz

Download URL metasona-0.1.0.tar.gz
Size 81.2 kB
Tags Source
SHA-256 checksum
How to use checksums
43de779dc2045e7f1f827529df6700bad07b3650dc536af7151b681096635e31
BLAKE2b-256 checksum
How to use checksums
746ecd550954eb3e4f830b70b0005f7c920c8e6090277096e60d46e6755713c1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 16, 2026.

Transparency log

Release files / metasona-0.1.0-py3-none-win_amd64.whl

Download URL metasona-0.1.0-py3-none-win_amd64.whl
Size 126.5 kB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
257bb852c4ed838a53c816d6e38713730d1c31e053c1939876192e7c43881a60
BLAKE2b-256 checksum
How to use checksums
e3a765bb379d937cbc34d69e51bf7bf5669227723d02030fadeb6629b31f903b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 16, 2026.

Transparency log

Release files / metasona-0.1.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL metasona-0.1.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 137.8 kB
Tags Linux glibc 2.17+ x86-64 Python 3
SHA-256 checksum
How to use checksums
1fe46ee024fdd4a1bf50e96b75c625586f25d90b9930457e833aa29020e39b03
BLAKE2b-256 checksum
How to use checksums
fd1ed6089f97d7e73fda1a61f69228287b239e02ee0c9ad824d1fe9eb5d8d0f1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 16, 2026.

Transparency log

Release files / metasona-0.1.0-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl

Download URL metasona-0.1.0-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Size 135.8 kB
Tags Linux glibc 2.17+ ARM64 Python 3
SHA-256 checksum
How to use checksums
878c189747b4121fdef8259300569e92fe8bb448dd5b939b2b635281ff21e053
BLAKE2b-256 checksum
How to use checksums
fa177740dc0cf64652e0dafabdadbe6087660ab1ae205a033b82d350c32246d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 16, 2026.

Transparency log

Release files / metasona-0.1.0-py3-none-macosx_11_0_arm64.whl

Download URL metasona-0.1.0-py3-none-macosx_11_0_arm64.whl
Size 148.5 kB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
22b9827b7f10055e012cf5c771c707241c7faabd5b593cfb9a3d7fa270fd7ecd
BLAKE2b-256 checksum
How to use checksums
ae92085aad7e3d91af2deac3fb304478106463e7a9d10dbc7225a86c661c6603
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 16, 2026.

Transparency log

Release files / metasona-0.1.0-py3-none-macosx_10_9_x86_64.whl

Download URL metasona-0.1.0-py3-none-macosx_10_9_x86_64.whl
Size 163.8 kB
Tags Python 3 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
556be348ee8250d57dc689502484c07a706c1e9613fbf2439ccc085c36d93385
BLAKE2b-256 checksum
How to use checksums
911c8ffbdcc0132fe4aa137826e60cc95f17badde179720899a8d08018490f75
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 16, 2026.

Transparency log

Release history Release notifications | RSS feed

0.2.2

6 release files

0.2.1

6 release files

0.2.0

6 release files

0.1.1

6 release files

This release

0.1.0 This release

6 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page