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

MetaSona requires Python 3.10–3.14. Install the published package from PyPI with pip:

python -m pip install metasona

Or add it to a uv project:

uv add metasona

Prebuilt wheels are published for Windows x64, Linux x64/ARM64, and macOS Intel/Apple silicon, so these installations do not require a C compiler.

To install from a source checkout instead, use python -m pip install . or uv add /path/to/metasona. Building from source requires a C11 compiler.

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.1

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.1
File Size Uploaded
metasona-0.1.1.tar.gz 81.5 kB Details

Built distributions (wheels)

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

Total release size: 794.8 kB

Release files / metasona-0.1.1.tar.gz

Download URL metasona-0.1.1.tar.gz
Size 81.5 kB
Tags Source
SHA-256 checksum
How to use checksums
212dce12356da6290f5f114e0ba71db476e59017baa193a3a27634ad5bb6cd4e
BLAKE2b-256 checksum
How to use checksums
f16a46af3f7cc2b8fd8c1b9dbf17133bdc09399e6093ee4a856009600f040ed3
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.1-py3-none-win_amd64.whl

Download URL metasona-0.1.1-py3-none-win_amd64.whl
Size 126.6 kB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
a61af8ecbf3274afc250a56659cfdda61e69c3fba94868ce0642170e36683fe5
BLAKE2b-256 checksum
How to use checksums
7f41106c696c1f3f07a18f7cc78b6c084626e54548476cc4f875bbb1f4dafb51
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.1-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL metasona-0.1.1-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 138.0 kB
Tags Linux glibc 2.17+ x86-64 Python 3
SHA-256 checksum
How to use checksums
ce121a7634b9c656aae670a194da9d61e0c96f90cf454f3880f80ed05341efec
BLAKE2b-256 checksum
How to use checksums
0a404b0c35b67347d49626ac451778a0721eb4ed8a9c159af585b3fcb11e9539
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.1-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl

Download URL metasona-0.1.1-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Size 136.0 kB
Tags Linux glibc 2.17+ ARM64 Python 3
SHA-256 checksum
How to use checksums
5329e95a17a08c3fe12134e749aaa4d395558f6f359fb5dad691c7d2655b9d8d
BLAKE2b-256 checksum
How to use checksums
63b585fe754f24265a7e74690289801b93dfad6907b1410dddfb3e95e239f32e
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.1-py3-none-macosx_11_0_arm64.whl

Download URL metasona-0.1.1-py3-none-macosx_11_0_arm64.whl
Size 148.7 kB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
4a66b6df05ada38045660ab0982401fe930a498ed4f28503968c5000988eac90
BLAKE2b-256 checksum
How to use checksums
55d044699547b7579a30bcd15c3d171a0edfa5b82c8bb8e3783ad339840b9cf5
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.1-py3-none-macosx_10_9_x86_64.whl

Download URL metasona-0.1.1-py3-none-macosx_10_9_x86_64.whl
Size 164.0 kB
Tags Python 3 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
aaf5e3cd0c6bec9451e76db39edd3e44b75a312e46fa499c56cc95cfa9abd9ad
BLAKE2b-256 checksum
How to use checksums
33601e6c29db805b62eda8bc389f3f2919c0e7c765ff408879898214d3b53226
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

This release

0.1.1 This release

6 release files

0.1.0

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