---
title: Duplex-MPE
canonical_url: "https://www.modelscope.ai/datasets/ChengqianMa/Duplex-MPE"
md_url: "https://www.modelscope.ai/datasets/ChengqianMa/Duplex-MPE.md"
repository: ChengqianMa/Duplex-MPE
last_updated: 2026-11-03
license: cc-by-4.0
storage_size: "9.9 GB"
downloads: 10
stars: 1
---

# Duplex-MPE

> Duplex-MPE - An open-source dataset by ChengqianMa on ModelScope. Benchmarking Multi-Party Interaction in Full-Duplex Dialogue

ChengqianMa/Duplex-MPE is a dataset on ModelScope. totalling 9.9 GB. licensed under cc-by-4.0.

- **Repository**: ChengqianMa/Duplex-MPE
- **License**: cc-by-4.0
- **Storage size**: 9.9 GB
- **Downloads**: 10
- **Stars**: 1
- **Last updated**: 2026-11-03

Source: https://www.modelscope.ai/datasets/ChengqianMa/Duplex-MPE

---

# Duplex-MPE

**Benchmarking Multi-Party Interaction in Full-Duplex Dialogue**

[Paper (arXiv:2609.31948)](https://arxiv.org/abs/2609.31948) · [Project page](https://step-out.github.io/Duplex-MPE-Page/) · [Hugging Face](https://huggingface.co/datasets/ChengqianMa/Duplex-MPE) · [ModelScope](https://www.modelscope.ai/datasets/ChengqianMa/Duplex-MPE)

Duplex-MPE evaluates when a full-duplex speech assistant should answer, remain silent or stop speaking in a conversation among several people. Each scenario contains three or four human speakers and the assistant Aria. The model receives continuous conversation audio, with no transcript, speaker label or turn boundary, and must decide on its own when to speak.

The dataset contains **2,000 scenario pairs (4,000 scenarios)**. In each pair, the request to Aria (T) names the assistant in the **explicit** scenario and identifies it only through conversational context in the **implicit** scenario. Both versions keep the same task and the same gold answer.

## Statistics

| | Explicit | Implicit |
|---|---:|---:|
| Scenarios | 2,000 | 2,000 |
| Human turns | 26,182 | 26,182 |
| T: unresolved request to Aria | 2,000 | 2,000 |
| N1: mentions Aria without a request to it | 3,041 | 3,039 |
| N2: addressed to another person or device | 14,052 | 14,054 |
| N3: no designated addressee, including self-talk | 3,267 | 3,267 |
| N4 question to Aria (`N4_Q`) | 1,911 | 1,911 |
| N4 human resolution (`N4_R`) | 1,911 | 1,911 |
| Human speech, counted per occurrence | 52.58 h | 52.97 h |

N1–N3 turns are the 20,360 silence-requiring windows per condition. Clips that occur in several scenarios are stored once: the release contains **31,025 WAV files** (61.1 hours of distinct audio, 10.56 GB), including the spoken duty preamble. Equal totals do not imply that the two scenarios of a pair have identical events or audio; local wording outside T and the N4 events can differ.

## Download

The same files are hosted on Hugging Face and ModelScope.

```bash
# Hugging Face
hf download ChengqianMa/Duplex-MPE --repo-type dataset --local-dir Duplex-MPE

# ModelScope
modelscope download ChengqianMa/Duplex-MPE --repo-type dataset --local-dir Duplex-MPE
```

After downloading, `sha256sum -c SHA256SUMS` inside the dataset directory verifies every file.

## Files

```text
README.md
LICENSE
dataset.json                     summary statistics and preamble metadata
manifests/explicit.json          2,000 scenarios whose T request names Aria
manifests/implicit.json          2,000 scenarios whose T request does not name Aria
audio/aria_duty_preamble.wav     spoken duty instruction played before every scenario
audio/<hash-prefix>/<sha256>.wav one file per distinct human-speech clip
audio_inventory.json             byte size, SHA-256, sample count and sample rate of every audio file
SHA256SUMS                       checksums of all files in the release
```

All audio is mono, 16-bit PCM WAV at 24 kHz. Audio paths in the manifests are relative to the dataset root. The files are byte-for-byte copies of the clips used in the paper's experiments; they were not re-synthesised, trimmed, resampled or normalised. Each file is named by its SHA-256, so identical clips are stored once.

## Manifest fields

Each manifest is a JSON list of scenarios.

| Field | Meaning |
|---|---|
| `scenario_id` | Scenario identifier, e.g. `duplex_mpe_0000_explicit` |
| `pair_id` | Shared identifier of the explicit and implicit scenarios of one pair |
| `addressing` | `explicit` or `implicit`; the addressing condition of the scenario's T request |
| `trigger_index` | Index of the scenario's single T turn |
| `gold_answer` | Intended answer to T, used for scoring only |
| `supporting_indices` | Earlier turns that support the answer, used for analysis only |
| `setting`, `activity`, `relation`, `device_context`, `register` | Scenario factors |
| `n_speakers` | Number of human speakers (3 or 4) |
| `turns` | Ordered list of human turns |

Each turn contains `turn_index` (zero-based), `speaker` (A–D), `text`, `event_type` (`T`, `N1`, `N2`, `N3`, `N4_Q` or `N4_R`), `addressee` (`aria`, `other_human`, `device`, `none` or `animal`), `speech_act` (`statement`, `request`, `question`, `self_talk` or `backchannel`), `audio_path`, `duration_s` and `sample_rate`.

Use `addressing` to assign a scenario to a condition and `pair_id` to match the two scenarios of a pair; do not infer either from file names. Speaker letters identify voices in the script; names spoken inside a dialogue need not correspond to them. Gold answers, event labels and annotations are for scoring and analysis and must not be given to the evaluated model.

## Loading example

```python
import json
from pathlib import Path

import soundfile as sf

root = Path("Duplex-MPE")  # local copy of this repository
scenarios = json.loads((root / "manifests/explicit.json").read_text())

scenario = scenarios[0]
t_turn = scenario["turns"][scenario["trigger_index"]]
audio, sample_rate = sf.read(root / t_turn["audio_path"])
print(scenario["scenario_id"], t_turn["text"], scenario["gold_answer"], sample_rate)
```

## Evaluation protocol

The audio is the model input; the manifests do not prescribe a fixed timeline because the waiting time after T depends on the evaluated model. In the paper, each scenario is played as follows:

1. Start from a fresh model state and play the 31.92 s duty preamble, then 0.5 s of silence.
2. Play the human turns in order, with 0.5 s of silence between consecutive clips.
3. After T, the model has 5 s to start speaking. Once it speaks, playback waits for 2 s of confirmed silence or a 60 s cap.
4. After `N4_Q`, wait 3 s and then play `N4_R`, whether or not the model has stopped speaking.

The duty preamble says:

> You are the voice assistant Aria, that is A R I A, Aria. You are in a room with several people. Only respond when someone speaks directly to you, Aria, and asks something you can answer. When people are talking to each other or to another device, or thinking out loud, or when the question they asked you has already been answered by someone else, stay silent and do not speak.

The paper defines four scores on separate denominators: fresh-onset response rate, conditional answer accuracy, silence preservation and answering-window yield, plus two coverage diagnostics. See the paper for the metric definitions, detector settings and scoring rules.

## Construction

Scenario scripts, paired rewrites and gold answers were generated with Claude Opus 5. Every human turn was synthesised separately with Qwen3-TTS-CustomVoice (Apache-2.0) using the preset voices `ryan`, `aiden`, `eric` and `dylan` for speakers A, B, C and D. No recordings of real people were used. Human validation of the scripts, labels and synthesised speech is reported in the paper.

## Intended use and limitations

Duplex-MPE is intended for evaluating selective participation of speech assistants in multi-party conversation. The conversations are synthetic and in English, and all speakers use four preset TTS voices. The benchmark does not measure robustness to natural recording conditions, background noise or diverse real voices.

## License

The dataset is released under the [Creative Commons Attribution 4.0 International License (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/). Please cite the paper when you use it.

## Citation

```bibtex
@article{ma2026duplexmpe,
  title   = {Duplex-MPE: Benchmarking Multi-Party Interaction in Full-Duplex Dialogue},
  author  = {Ma, Chengqian and Feng, Wenhao and Jin, Weixuan and Dai, Gaole and Xie, Tianyu and Ma, Yuexiao and Kang, Zhaolu and Zhao, Xiangyu and Zheng, Xiawu and Chao, Fei},
  journal = {arXiv preprint arXiv:2609.31948},
  year    = {2026}
}
```
