# MMGenre **Benchmarking Singing Voice Synthesis across Multiple Musical Genres** arXiv HuggingFace Dataset Project Page GitHub Code License
MMGenre is a diagnostic benchmark for studying how singing voice synthesis (SVS) systems behave across diverse musical genres. This repository provides the benchmark's symbolic music scores, genre taxonomy, loading utilities, and analysis examples. It contains no audio. ## Dataset Statistics MMGenre contains **3,152** score segments across **10** major genres and **26** subgenres. The names and counts below are derived directly from the score IDs. | Genre | Segments | Subgenres and segment counts | |---|---:|---| | blues | 247 | `delta-blues` (128), `jump-blues` (119) | | classical | 266 | `art-song` (85), `opera` (181) | | country | 317 | `bluegrass-country` (134), `classic-country` (183) | | electronic | 287 | `house` (48), `techno` (155), `trance` (84) | | jazz | 264 | `bebop-jazz` (115), `swing-jazz` (149) | | pop | 566 | `ballad-pop` (255), `folk-pop` (203), `synthpop` (108) | | rap | 246 | `east-coast-gangsta-rap` (92), `old-skool-rap-pioneers` (64), `reggaeton-latin-rap` (90) | | rnb | 407 | `motown-soul` (119), `neo-soul` (95), `new-jack-swing` (193) | | rock | 309 | `alternative-rock` (125), `heavy-metal` (59), `punk-rock` (125) | | world | 243 | `africa` (53), `arab` (105), `india` (85) | The machine-readable hierarchy is available at [`data/genre_taxonomy.json`](data/genre_taxonomy.json).
MMGenre genre and subgenre taxonomy
## QuickStart Install the loader from this repository: ```bash python -m pip install -e . ``` Load one example: ```python from mmgenre import load_scores music_score = load_scores(genres=["pop"], phoneme_set="opencpop")[0] print(music_score.id, music_score.subgenre, music_score.lyrics) print(music_score.phonemes) print(music_score.midi_notes) ``` Select multiple genres or load all genres by default: ```python scores = load_scores(genres=["pop", "rock", "jazz"]) all_scores = load_scores() ``` Use a score with an SVS model: ```python # Adapt ScoreRecord to the input structure expected by your SVS system. generated_audio = model.infer(music_score) ``` Run the statistics CLI: ```bash mmgenre-stats mmgenre-stats --genre pop --genre rock --phoneme-set gtsinger ``` See [`notebooks/quickstart.ipynb`](notebooks/quickstart.ipynb) for sample inspection, distribution analysis, score characteristics, technique labels, and an SVS evaluation workflow. ## Score Representations Every genre directory contains `opencpop.txt` and `gtsinger.txt`. Both use one pipe-delimited record per segment: ```text id|lyrics|phoneme list|midi list|syllable duration list|phoneme duration list|is_slur ``` For every valid TXT record: ```text len(phonemes) == len(midi_notes) == len(syllable_durations) == len(phoneme_durations) == len(slur_flags) ``` - **OpenCpop** uses the OpenCpop phoneme inventory and is the default choice for OpenCpop-compatible models. - **GTSinger** uses the GTSinger phoneme inventory. Its phoneme alignment may differ from OpenCpop, so models must use the matching representation. - **Technique labels** are available with `load_scores(phoneme_set="gtsinger", include_tech=True)`. They are aligned only to GTSinger phonemes and cannot be requested with OpenCpop. The structured `gtsinger.json` files include GTSinger scores and phoneme-level singing technique attributes. The official dataset release does not contain `rock/gtsinger.json`; therefore, technique loading rejects selections that include rock. The repository does not synthesize or substitute missing labels. ## Repository Structure ```text . ├── data/ │ ├── genre_taxonomy.json │ ├── blues/ │ │ ├── opencpop.txt │ │ ├── gtsinger.txt │ │ └── gtsinger.json │ └── ... ├── notebooks/quickstart.ipynb ├── src/mmgenre/ └── tests/ ``` Score IDs follow: ```text {genre}_{subgenre}_suno_{song_id}_{segment_id} ``` For example, `blues_delta-blues_suno_000_01` belongs to the `blues` genre and the `delta-blues` subgenre. ## TODO - Release the score construction pipeline. - Add per-genre SVS experiment details and result tables. ## License MMGenre is released under the [Creative Commons Attribution 4.0 International License](https://creativecommons.org/licenses/by/4.0/) (CC BY 4.0). Commercial use is permitted with attribution. See [`LICENSE`](LICENSE). ## Citation If you find MMGenre useful, please cite: ```bibtex @inproceedings{feng2026mmgenre, title={MMGenre: Benchmarking Singing Voice Synthesis across Multiple Musical Genres}, author={Feng, Wenhao and Tang, Yuxun and Shi, Jiatong and Jin, Qin}, booktitle={Proceedings of Interspeech 2026}, year={2026} } ```