Skip to main content

MAPSS

CI Paper License: MIT

MAPSS (Manifold-based Assessment of Perceptual Source Separation) provides two perceptually grounded source-separation measures:

  • Perceptual Separation (PS): how well each output is separated from the other reference sources.
  • Perceptual Match (PM): how closely each output matches its attributed reference source.

Both measures operate frame by frame in [0, 1]; higher is better. MAPSS builds a perceptual manifold from self-supervised audio representations and controlled distortions. It can also return the error quantities derived in the ICLR 2026 paper.

Install

From PyPI after the first package release:

pip install mapss-measures

Directly from the current GitHub version:

pip install "git+https://github.com/Amir-Ivry/MAPSS-measures.git"

MAPSS supports Python 3.10-3.12. The default 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

result = mapss(
    reference=["reference_speaker_1.wav", "reference_speaker_2.wav"],
    output=["estimate_speaker_1.wav", "estimate_speaker_2.wav"],
)

print(result.summary)
print(result.ps)  # frame-level Perceptual Separation
print(result.pm)  # frame-level Perceptual Match
result.save("mapss_results")

Source order is meaningful: output[i] must estimate reference[i]. MAPSS evaluates source separation, so at least two reference/output sources are required.

In-memory waveforms

import soundfile as sf
from mapss import mapss

ref_1, sr = sf.read("reference_1.wav")
ref_2, _ = sf.read("reference_2.wav")
out_1, _ = sf.read("output_1.wav")
out_2, _ = sf.read("output_2.wav")

result = mapss(
    reference=[ref_1, ref_2],
    output=[out_1, out_2],
    sample_rate=sr,
    source_names=["speaker_1", "speaker_2"],
    model="wav2vec2",
    layer=2,
    alpha=1.0,
)

Two-dimensional NumPy arrays or PyTorch tensors shaped (sources, samples) are also accepted. Inputs are converted to mono and resampled to the paper's 16 kHz operating rate.

What the result contains

result.ps          # pandas.DataFrame: timestamp_ms + one column per source
result.pm          # pandas.DataFrame: timestamp_ms + one column per source
result.ci          # confidence/error components, or None when add_ci=False
result.summary     # mean PS/PM and valid-frame counts per source
result.source_names

Inactive frames are NaN and are excluded from the convenience means. For reported challenge results, retain the frame tables and state the aggregation you use. The paper's PM utterance score is a mean over active frames; its PS analysis uses the pooling procedure defined in Appendix B.4 rather than a plain mean.

Important keyword arguments

Argument Default Meaning
model "wav2vec2" Self-supervised representation; the default is wav2vec 2.0 Large.
layer 2 Paper-selected transformer layer for the default English setup.
alpha 1.0 Diffusion-map density normalization in [0, 1].
add_ci True Compute the paper's deterministic/probabilistic error components.
seed 42 Seed used by MAPSS and its distortion bank.
max_gpus all available Maximum GPUs; use 0 to force CPU.
length_policy "error" Reject unequal lengths, or use "trim" explicitly.

Supported models are wav2vec2, wavlm, hubert, their _base variants, wav2vec2_xlsr, and raw. raw bypasses self-supervised encoding and is useful for development smoke tests; it is not the paper's recommended reporting configuration.

Command line

mapss \
  --reference reference_1.wav reference_2.wav \
  --output estimate_1.wav estimate_2.wav \
  --model wav2vec2 --layer 2 \
  --results-dir mapss_results

The historical manifest workflow remains supported:

mapss --manifest Manifests/example_English.json --model wav2vec2 --layer 2

Before reporting a challenge result

  1. Keep reference and output source order identical.
  2. Report the package version, model, layer, alpha, seed, and aggregation.
  3. Do not replace inactive-frame NaN values with zeros.
  4. Use the same settings for every submitted system.
  5. Cite the MAPSS paper and link this repository.

See the challenge integration guide, the complete Python API reference, and testing instructions.

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

MIT. See LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mapss_measures-1.1.0.tar.gz (35.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mapss_measures-1.1.0-py3-none-any.whl (34.4 kB view details)

Uploaded Python 3

File details

Details for the file mapss_measures-1.1.0.tar.gz.

File metadata

  • Download URL: mapss_measures-1.1.0.tar.gz
  • Upload date:
  • Size: 35.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for mapss_measures-1.1.0.tar.gz
Algorithm Hash digest
SHA256 105c55bbfbc9fce76843d6160098df2f15d3067e8ede83481c38b90f5398ed94
MD5 85a21587fcf87fa3ac1d90ac4d36a83e
BLAKE2b-256 48ff33adaf02b99bac6ad6556d0a43575903d12219d10c69ac433dc254447a16

See more details on using hashes here.

Provenance

The following attestation bundles were made for mapss_measures-1.1.0.tar.gz:

Publisher: publish.yml on Amir-Ivry/MAPSS-measures

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mapss_measures-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: mapss_measures-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 34.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for mapss_measures-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5f7e2a43c44164ed9fa0eb32363b362821abaa72f3577122bacacbc8d08bf313
MD5 22fa2841c4c3a9213db4c656ad034ed6
BLAKE2b-256 0895f688732e6fba111dc52df56045edcc0eff0b34c328280c77467fb747bfc1

See more details on using hashes here.

Provenance

The following attestation bundles were made for mapss_measures-1.1.0-py3-none-any.whl:

Publisher: publish.yml on Amir-Ivry/MAPSS-measures

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

1.1.2

2 files

1.1.1

2 files

This release

1.1.0 This release

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page