MAPSS
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.
Install
MAPSS supports Python 3.10-3.12.
python -m pip install "mapss-measures==1.1.1"
Install the optional plotting command as well:
python -m pip install "mapss-measures[plot]==1.1.1"
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")
Input contract:
output[i]must estimatereference[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
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
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 whenadd_ci=True;summary.csv: convenient per-source means and valid-frame counts.
Plot all sources after installing the plot extra:
python -m mapss.plotting mapss_results
The figure is saved as mapss_results/ps_pm_over_time.png.
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
- Clean-laptop quick start
- Python API reference
- Interpreting PS and PM
- Troubleshooting
- Reproducible evaluation
- Grand-challenge integration
- Examples
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.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mapss_measures-1.1.1.tar.gz.
File metadata
- Download URL: mapss_measures-1.1.1.tar.gz
- Upload date:
- Size: 51.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2d2498e9c6938d74f011040550c0983ad839c3e23cb1cec2a9bc017c0306ab2b
|
|
| MD5 |
f9ecb0399421252498f1e90f172b847a
|
|
| BLAKE2b-256 |
10269fe7393c7013e79c4891b878211c7b45ba7d519e6f86ef09bb443c380491
|
Provenance
The following attestation bundles were made for mapss_measures-1.1.1.tar.gz:
Publisher:
publish.yml on Amir-Ivry/MAPSS-measures
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mapss_measures-1.1.1.tar.gz -
Subject digest:
2d2498e9c6938d74f011040550c0983ad839c3e23cb1cec2a9bc017c0306ab2b - Sigstore transparency entry: 2413861512
- Sigstore integration time:
-
Permalink:
Amir-Ivry/MAPSS-measures@024b9e6d808723fbfe3ccbcf95228868406a10ae -
Branch / Tag:
refs/heads/release-v1.1.1 - Owner: https://github.com/Amir-Ivry
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@024b9e6d808723fbfe3ccbcf95228868406a10ae -
Trigger Event:
push
-
Statement type:
File details
Details for the file mapss_measures-1.1.1-py3-none-any.whl.
File metadata
- Download URL: mapss_measures-1.1.1-py3-none-any.whl
- Upload date:
- Size: 36.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e03bb3adc1bce782b126751ff90fcb54649ef1f4cf969fecc4862ab33e589a0e
|
|
| MD5 |
b06a243657f1f755f54fa108fa1fb520
|
|
| BLAKE2b-256 |
93e8378f617bf1a776653f952cc8e068f985bcdfe7d76027df0a69ac2691c45a
|
Provenance
The following attestation bundles were made for mapss_measures-1.1.1-py3-none-any.whl:
Publisher:
publish.yml on Amir-Ivry/MAPSS-measures
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mapss_measures-1.1.1-py3-none-any.whl -
Subject digest:
e03bb3adc1bce782b126751ff90fcb54649ef1f4cf969fecc4862ab33e589a0e - Sigstore transparency entry: 2413861653
- Sigstore integration time:
-
Permalink:
Amir-Ivry/MAPSS-measures@024b9e6d808723fbfe3ccbcf95228868406a10ae -
Branch / Tag:
refs/heads/release-v1.1.1 - Owner: https://github.com/Amir-Ivry
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@024b9e6d808723fbfe3ccbcf95228868406a10ae -
Trigger Event:
push
-
Statement type: