Metadata-Version: 2.5
Name: discophon
Version: 0.2.0
Summary: The Phoneme Discovery Benchmark
Project-URL: Documentation, https://benchmarks.cognitive-ml.fr/discophon/guide/
Project-URL: Homepage, https://benchmarks.cognitive-ml.fr/discophon/
Project-URL: Issues, https://github.com/bootphon/discophon/issues
Project-URL: Paper, https://www.isca-archive.org/interspeech_2026/poli26_interspeech.html
Project-URL: Repository, https://github.com/bootphon/discophon
Author: Maxime Poli
Author-email: CoML <dev@cognitive-ml.fr>
License-Expression: MIT
License-File: LICENSE
Keywords: machine learning,speech
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.12
Requires-Dist: filelock>=3.20.2
Requires-Dist: numba>=0.63.1
Requires-Dist: numpy>=2.3.5
Requires-Dist: polars>=1.44.1
Requires-Dist: praat-textgrids>=1.4.0
Requires-Dist: scipy>=1.17.0
Requires-Dist: tqdm>=4.67.1
Requires-Dist: xarray>=2025.12.0
Provides-Extra: abx
Requires-Dist: fastabx>=0.8.0; extra == 'abx'
Provides-Extra: baselines
Requires-Dist: joblib>=1.5.3; extra == 'baselines'
Requires-Dist: minimal-hubert>=0.0.8; extra == 'baselines'
Requires-Dist: orjson>=3.11.5; extra == 'baselines'
Requires-Dist: scikit-learn>=1.8.0; extra == 'baselines'
Requires-Dist: spidr[train]>=0.2.0; extra == 'baselines'
Requires-Dist: torch>=2.13.0; extra == 'baselines'
Requires-Dist: torchcodec>=0.16.0; extra == 'baselines'
Requires-Dist: wandb>=0.19.10; extra == 'baselines'
Provides-Extra: prepare
Requires-Dist: datacollective>=0.6.4; extra == 'prepare'
Requires-Dist: requests>=2.32.5; extra == 'prepare'
Requires-Dist: soundfile>=0.13.1; extra == 'prepare'
Requires-Dist: soxr>=1.0.0; extra == 'prepare'
Description-Content-Type: text/markdown

<!--
title: DiscoPhon
template: main.html
-->

![DiscoPhon](https://raw.githubusercontent.com/bootphon/discophon/refs/heads/main/docs/assets/logo-full.svg)

<div class="page-subtitle">Benchmarking the Unsupervised Discovery of Phoneme Inventories With Discrete Speech Units</div>

[arXiv](https://arxiv.org/abs/2603.18612) · [DOI](https://www.isca-archive.org/interspeech_2026/poli26_interspeech.html) · [GitHub](https://github.com/bootphon/discophon) · [Website](https://benchmarks.cognitive-ml.fr/discophon)

DiscoPhon is a multilingual benchmark evaluating unsupervised phoneme discovery from discrete speech units.
Given only 10 hours of speech in an unseen language, models must produce discrete units that map to a predefined phoneme inventory.

## Getting started

DiscoPhon requires **Python ≥ 3.12**.

- Install this package:
  ```bash
  pip install discophon              # core: phoneme discovery evaluation
  pip install "discophon[prepare]"   # adds the data download and preparation
  pip install "discophon[abx]"       # adds ABX discriminability (fastabx)
  pip install "discophon[baselines]" # adds the baseline models
  ```
  Only the `baselines` extra has a system dependency:
  [FFmpeg](https://ffmpeg.org/download.html), required by `torchcodec` to read audio.
- [Follow the tutorials](https://benchmarks.cognitive-ml.fr/discophon/guide/) to download data, evaluate models, and prepare your submission.
- [Current leaderboard](https://benchmarks.cognitive-ml.fr/discophon/leaderboard/).

## References

```bibtex
@inproceedings{poli2026discophon,
  title     = {{DiscoPhon: Benchmarking the Unsupervised Discovery of Phoneme Inventories With Discrete Speech Units}},
  author    = {Maxime Poli and Manel Khentout and Angelo {Ortiz Tandazo} and Ewan Dunbar and Emmanuel Chemla and Emmanuel Dupoux},
  year      = {2026},
  booktitle = {{Interspeech 2026}},
  pages     = {6664--6669},
  doi       = {10.21437/Interspeech.2026-2791},
  issn      = {2958-1796},
}
```
