Skip to main content

MAPSS

CI PyPI Python Paper License: MIT

MAPSS (Manifold-based Assessment of Perceptual Source Separation) is an ICLR 2026 metric package for source-separation systems. It reports two complementary frame-level measures in [0, 1], where higher is better:

  • Perceptual Separation (PS): separation of an estimated source from competing references.
  • Perceptual Match (PM): perceptual match between an estimated source and its assigned reference.

The public interface accepts N ordered reference waveforms and the corresponding N ordered system outputs. It supports WAV paths, NumPy arrays, and PyTorch tensors. WAV and FLAC paths are tested directly; other formats supported by the installed libsndfile build may also be used.

Install

MAPSS supports Python 3.10-3.12.

python -m pip install "mapss-measures==1.1.2"

Install the optional plotting command as well:

python -m pip install "mapss-measures[plot]==1.1.2"

The default pretrained backbone is downloaded from Hugging Face on first use. A CUDA GPU is recommended; CPU execution is supported but slower.

Python quick start

from mapss import mapss

references = [
    "reference_source_1.wav",
    "reference_source_2.wav",
]
outputs = [
    "estimated_source_1.wav",
    "estimated_source_2.wav",
]

result = mapss(
    reference=references,
    output=outputs,
    source_names=["source_1", "source_2"],
    model="wav2vec2",
    layer=2,
    alpha=1.0,
    seed=42,
)

print(result.summary)
result.save("mapss_results", plot=True)

Input contract: output[i] must estimate reference[i]. MAPSS requires at least two sources and does not silently find or change the source assignment.

Inputs are downmixed to mono and resampled to the paper's 16 kHz operating rate. By default, unequal signal durations are rejected; use length_policy="trim" only when shortest-length alignment is intentional.

Command line

The same evaluation can be run without writing a Python script:

python -m mapss \
  --reference reference_1.wav reference_2.wav \
  --output estimate_1.wav estimate_2.wav \
  --source-name source_1 --source-name source_2 \
  --model wav2vec2 --layer 2 --alpha 1.0 --seed 42 \
  --results-dir mapss_results --plot

Windows PowerShell uses the same module command with backtick line continuations:

python -m mapss `
  --reference "C:\data\reference_1.wav" "C:\data\reference_2.wav" `
  --output "C:\data\estimate_1.wav" "C:\data\estimate_2.wav" `
  --model wav2vec2 --layer 2 `
  --results-dir mapss_results --plot

Add more paths to both lists for mixtures with more sources. Keep the two lists the same length and order.

Results and plotting

result.save(...) and --results-dir write:

  • ps_scores.csv: frame timestamps and PS for every source;
  • pm_scores.csv: frame timestamps and PM for every source;
  • confidence.csv: paper-derived error quantities when add_ci=True;
  • summary.csv: convenient per-source means and valid-frame counts.

With add_ci=True, result.save("mapss_results", plot=True) writes the paper-style, six-panel time-aligned figure automatically. The panels contain PM, PS, the deterministic error radius for each measure, and the corresponding probabilistic 95% bounds.

To plot an existing result directory after installing the plot extra:

python -m mapss.plotting mapss_results

The figure is saved as mapss_results/mapss_over_time.png. If confidence data is absent, the standalone plotting command remains backward compatible and creates a two-panel PS/PM figure; result.save(..., plot=True) deliberately requires confidence data.

Inactive frames are stored as NaN and excluded from convenience means. Do not replace them with zero. The paper's formal PS utterance aggregation is defined in Appendix B.4 and is not a plain frame mean.

Important keyword arguments

Argument Default Meaning
model "wav2vec2" Representation backbone; default is wav2vec 2.0 Large.
layer paper default Layer 2 for the default English configuration.
alpha 1.0 Diffusion-map density normalization in [0, 1].
add_ci True Compute the paper-derived error components.
seed 42 Seed for MAPSS and the distortion bank.
max_gpus all visible Maximum GPUs; set 0 to force CPU.
length_policy "error" Reject unequal lengths; "trim" is explicit opt-in.

Supported representations are wav2vec2, wavlm, hubert, their _base variants, wav2vec2_xlsr, and raw. The raw model is only for fast installation tests, not scientific reporting.

Documentation

Citation

@inproceedings{ivry2026mapss,
  title     = {MAPSS: Manifold-based Assessment of Perceptual Source Separation},
  author    = {Ivry, Amir and Cornell, Samuele and Watanabe, Shinji},
  booktitle = {International Conference on Learning Representations},
  year      = {2026}
}

License

MAPSS is released under the MIT License.

Metadata

Release files for mapss-measures 1.1.2

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

Source distribution (sdist)

Source distribution for mapss-measures 1.1.2
File Size Uploaded
mapss_measures-1.1.2.tar.gz 62.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mapss-measures 1.1.2
File Interpreter ABI Platform
mapss_measures-1.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 102.9 kB

Release files / mapss_measures-1.1.2.tar.gz

Download URL mapss_measures-1.1.2.tar.gz
Size 62.5 kB
Tags Source
SHA-256 checksum
How to use checksums
d7a8d5051de35c18706529a60e1e1a5c92bba7469067fbee6e0cde05e6c1efe6
BLAKE2b-256 checksum
How to use checksums
03c7bb978cc42df6f69e449b7ea33e07e64337211d8df9b56c3607e49d236517
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 Aug 11, 2026.

Transparency log

Release files / mapss_measures-1.1.2-py3-none-any.whl

Download URL mapss_measures-1.1.2-py3-none-any.whl
Size 40.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
883cfdeee47a17927b38eb1e9dd07b4e0db074c008f57b61e28c4db7e73a1508
BLAKE2b-256 checksum
How to use checksums
e8561c85a0f482dff080f7e0488df602be59f7b45b84bba49574c6f661ff3941
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 Aug 11, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.1.2 This release

2 release files

1.1.1

2 release files

1.1.0

2 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