YuE2 : génération musicale ouverte avec partitions modifiables et agents IA

YuE2 transforme des paroles et des prompts de style en partitions musicales modifiables, en chansons de qualité comparable aux modèles de pointe, en reprises zero-shot et en révisions pilotées par des agents.

YuE2 : génération musicale ouverte avec partitions modifiables et agents IA

La plupart des générateurs de musique par IA dissimulent le processus de composition derrière une simple opération de conversion d’un prompt en audio. Cela les rend pratiques, mais difficiles à contrôler : si l’harmonie est incorrecte, que la mélodie dérive ou que l’arrangement doit être modifié, la solution habituelle consiste à tout régénérer en espérant obtenir un meilleur résultat.

YuE2 adopte une approche différente. Il crée d’abord un plan musical explicite et modifiable — contenant des informations sur la mélodie et les accords — puis transforme ce plan en un enregistrement stéréo complet. Le résultat est un système ouvert de génération musicale conçu non seulement pour la création, mais aussi pour les reprises zero-shot, l’édition fondée sur une partition et les flux de travail agentiques.

Qu’est-ce qui différencie YuE2 ?

YuE2 prend en charge trois flux de travail liés :

  1. Création : fournir des paroles et un prompt de style, puis générer une partition et une chanson complète.
  2. Génération de reprises : transcrire un enregistrement source, préserver sa mélodie et la réinterpréter dans un nouveau style.
  3. Édition agentique : laisser une personne ou un agent IA réviser l’harmonie, la mélodie, les paroles, le tempo, l’instrumentation ou la structure du morceau avant de générer une nouvelle version.

L’idée centrale est celle d’un pipeline musical en boîte blanche. Au lieu de traiter l’audio comme un artefact final opaque, YuE2 expose la composition intermédiaire afin qu’elle puisse être inspectée, jouée, modifiée et régénérée.

Le dépôt indique que YuE2 est compétitif face à Suno v5 et v6 sur WildSongBench. Sa configuration best-of-8 atteint un SongBench Avg de 6.9632, la moyenne observée la plus élevée parmi les configurations évaluées. Le benchmark comprend 192 prompts, même si les auteurs précisent que le faible écart entre les meilleurs systèmes n’établit pas de significativité statistique.

Des paroles à une partition modifiable

L’architecture combine un backbone mixture-of-transformers autorégressif/non autorégressif avec le flow matching et un autoencodeur variationnel :

  1. Le modèle prédit autorégressivement un plan symbolique et des tokens musicaux sémantiques.
  2. Les latents acoustiques sont générés avec le flow matching.
  3. Un VAE décode ces latents en audio stéréo à 48 kHz.

L’API par étapes rend ces opérations visibles :

plan() → generate_semantic() → synthesize() → decode()

Cette séparation est utile pour les développeurs. Vous pouvez réutiliser un plan exact, sélectionner un décodeur, conserver les artefacts intermédiaires et comparer plusieurs réalisations audio sans abandonner la composition elle-même.

La création, la reprise et l’édition diffèrent principalement par l’origine de la partition :

  • YuE2 génère la partition à partir des paroles et du style.
  • SheetSage2 transcrit un enregistrement source en partition mélodique.
  • Un utilisateur ou un agent modifie une composition ABC existante.

Installer et exécuter YuE2 localement

L’environnement de démarrage rapide actuel cible Linux, Python 3.12 et un GPU NVIDIA prenant en charge BF16 avec 24 Go de VRAM. Les fichiers du modèle sont téléchargés depuis Hugging Face lors de la première utilisation, et le pipeline par défaut produit un audio stéréo non quantifié à 48 kHz.

git clone https://github.com/multimodal-art-projection/YuE.git
cd YuE

python3.12 -m venv .venv
source .venv/bin/activate

python -m pip install --upgrade pip
python -m pip install .

python examples/generate.py \
  --output outputs/first-song

Le répertoire généré est bien plus qu’un simple export audio. Il conserve la partition, les tokens sémantiques, les latents acoustiques, les paramètres de génération et les identifiants des modèles. La conservation de ces artefacts rend les expériences reproductibles et fournit une base pour les modifications ultérieures.

L’interface Python est tout aussi concise :

import json
from pathlib import Path

from yue2 import YuE2Pipeline

request = json.loads(
    Path("examples/song.json").read_text(encoding="utf-8")
)

with YuE2Pipeline.from_pretrained(
    "m-a-p/YuE2-3B",
    device="cuda",
) as pipe:
    song = pipe(**request)
    song.save_artifacts("outputs/my-song")
    print(song.truncated)

Choisir le bon mode de génération

YuE2 expose un paramètre cot qui contrôle la quantité de planification symbolique utilisée :

Paramètre Comportement
cot="full" Génère un plan mélodique et harmonique modifiable ; c’est le mode par défaut pour les nouveaux morceaux.
cot="melody" Utilise un plan mélodique avec un accompagnement libre ; recommandé pour les reprises.
cot="off" Génère directement à partir des paroles et du style.

Vous pouvez également fournir une partition ABC via abc=.... La génération d’une partition complète offre davantage de contrôle sur l’harmonie, tandis que le conditionnement mélodique seul laisse l’accompagnement s’adapter librement au style cible.

Générer une reprise zero-shot

Un flux de travail de reprise commence par la transcription. Utilisez SheetSage2 pour extraire la mélodie source sous forme de notation ABC, vérifiez la transcription, puis fournissez de nouvelles paroles ou un style cible différent à YuE2.

Pour les reprises, le dépôt recommande cot="melody" et une partition sans symboles d’accords. Cela préserve la mélodie essentielle tout en permettant à YuE2 de créer un nouvel accompagnement correspondant au genre demandé.

from pathlib import Path

from yue2 import YuE2Pipeline

with YuE2Pipeline.from_pretrained(
    "m-a-p/YuE2-3B",
    device="cuda",
) as pipe:
    cover = pipe(
        style=(
            "English, jazz-funk, warm lead vocal, Rhodes, "
            "bass and drums"
        ),
        lyrics=Path("cover-lyrics.txt").read_text(encoding="utf-8"),
        abc=Path("cover-score/score.abc").read_text(encoding="utf-8"),
        cot="melody",
        seed=42,
    )
    cover.save_artifacts("outputs/cover")

L’évaluation rapportée des reprises zero-shot est remarquable : sur 948 œuvres, YuE2 avec partition complète atteint 0.647 CLEWS mAP, contre 0.006 sans partition. Ce résultat est obtenu avec le générateur généraliste, et non avec un modèle spécialisé dans les reprises et affiné à cette fin. Les reprises fondées uniquement sur la mélodie sacrifient une partie de la fidélité à la source au profit d’une plus grande liberté pour modifier l’arrangement.

SheetSage2 s’exécute dans un environnement distinct et charge automatiquement son encodeur MERT2. Le dépôt inclut un guide complet de transcription et de génération, ainsi qu’un exemple de mélodie originale pour la génération conditionnée par une partition sans traitement préalable d’un enregistrement.

Modifier la composition au lieu de tout régénérer à l’aveugle

La partition symbolique est l’interface la plus importante de YuE2 pour les développeurs. Commencez par exporter un plan :

import json
from pathlib import Path

from yue2 import YuE2Pipeline

request = json.loads(
    Path("examples/song.json").read_text(encoding="utf-8")
)

with YuE2Pipeline.from_pretrained(
    "m-a-p/YuE2-3B",
    device="cuda",
) as pipe:
    plan = pipe.plan(**request)
    plan.save("outputs/plan")

Copiez outputs/plan/score.abc dans un fichier modifiable, par exemple edited.abc. Vous pouvez ensuite réviser manuellement ou via un agent l’harmonie, la mélodie, le tempo, l’instrumentation ou la structure. Générez la partition modifiée avec :

python examples/generate.py \
  --request examples/song.json \
  --abc-file edited.abc \
  --cot full \
  --output outputs/edited

Il ne s’agit pas d’une édition préservant la forme d’onde. YuE2 génère un nouvel enregistrement complet à partir de la composition modifiée ; il ne conserve pas l’audio original en dehors des changements symboliques. Cette distinction est importante lors de la conception de flux de production ou de la comparaison de versions.

Édition musicale agentique

Le dépôt inclut un package skills/yue2-music/ destiné aux agents prenant en charge les répertoires de compétences au format SKILL.md. Il apprend à un agent à :

  • Générer des chansons à partir de paroles et de prompts de style.
  • Transcrire et reprendre des enregistrements.
  • Modifier des partitions ABC.
  • Vérifier les invariants musicaux.
  • Organiser des comparaisons d’écoute.

L’environnement d’exécution Python s’installe séparément avec pip install . ; l’installation du package de compétences ne remplace pas l’environnement du modèle.

Une demande utile à un agent pourrait être :

Utilise la compétence yue2-music pour créer une chanson de piano-pop en anglais. Conserve l’audio et la partition d’origine. Crée une seconde version avec une harmonie jazz, préserve la mélodie vocale et l’ordre des paroles, puis fournis-moi les deux versions pour comparaison.

Le projet illustre ce type d’interaction avec The Last Train : neuf étapes d’édition et quatorze versions font évoluer le morceau de la pop mandarine vers le jazz anglais, avec une nouvelle harmonie et un solo de saxophone. Chaque version peut être écoutée avec la conversation, la partition, le prompt et les paroles associés.

Résultats sur WildSongBench

Le benchmark rapporté utilise 192 prompts WildSongBench et le décodeur du benchmark, YuE2-Vae-legacy. YuE2 standard sélectionne deux candidats, tandis que best-of-8 en sélectionne huit.

Système / configuration SongBench Avg AudioBox PQ MuLan PER
YuE2 best-of-8 6.9632 8.2714 0.5051 9.79%
Mureka 9 6.9377 8.0226 0.4394 11.69%
Suno v5 6.8721 8.1698 0.5428 8.10%
YuE2 6.7316 8.2598 0.5068 8.44%
Suno v5.5 6.7150 8.1955 0.5089 5.96%
Suno v4.5 6.6995 8.2541 0.5022 5.80%
Suno v6 6.5562 8.1296 0.4916 7.58%
Suno v6 Wild 6.4195 8.1785 0.4999 7.45%
LeVo 2 6.3247 8.3966 0.3542 26.12%
MiniMax Music 2.6 6.3222 8.1711 0.4251 24.55%
MiniMax Music 3 6.2830 8.2825 0.3928 6.27%
HeartMuLa 6.2483 8.2933 0.3823 10.71%
Muse 6.0349 8.0517 0.3937 33.42%
ACE-Step 1.5 6.0118 8.0518 0.4372 7.46%
DiffRhythm 2 5.2428 7.9782 0.3782 18.41%
YuE 1 4.9165 7.8683 0.2623 36.38%
SongBloom 4.2350 8.1539 0.2697 19.19%

Le tableau doit être lu comme une comparaison multi-critères plutôt que comme un classement unique. SongBench Avg favorise YuE2 best-of-8, tandis que d’autres systèmes arrivent en tête sur certaines métriques individuelles. Les auteurs soulignent explicitement que les classements et les faibles écarts ne doivent pas être considérés comme une preuve de significativité statistique.

Modèles et ressources associés

YuE2 s’inscrit dans une pile plus large dédiée à l’IA musicale :

  • YuE2-3B : génération, planification symbolique, reprises et édition.
  • YuE2-Vae : décodeur par défaut pour la génération et l’écoute.
  • YuE2-Vae-legacy : décodeur utilisé pour le protocole de benchmark présenté.
  • SheetSage2 : transcription audio-vers-partition.
  • MERT-v2-FullSong : représentations de morceaux complets utilisées par SheetSage2.
  • MERT-v2-30s : représentations pour les enregistrements courts.
  • WildSongBench : prompts d’évaluation et ressources de benchmark.

L’extraction de caractéristiques MERT2 est facultative pour la génération ordinaire ; YuE2 ne nécessite pas le téléchargement séparé d’un modèle MERT2.

Licences et considérations pratiques

Le code, la documentation et la compétence d’agent de première partie du dépôt actuel sont distribués sous Apache 2.0. Les poids des modèles sont soumis à une licence distincte, CC BY-NC 4.0, et les composants tiers conservent leurs licences d’origine. La branche archivée YuE-v1 conserve sa licence d’origine, tandis que les archives plus anciennes yue2-v0.1.6 conservent leurs licences incluses.

Cette séparation est importante pour les déploiements commerciaux. Apache 2.0 couvre le code source, mais n’accorde pas automatiquement de droits commerciaux sur les poids des modèles ou les ressources tierces. Vérifiez toutes les licences applicables avant de commercialiser un produit ou de distribuer du contenu généré.

Pourquoi YuE2 est important

La principale contribution de YuE2 n’est pas simplement un checkpoint supplémentaire de conversion de texte en chanson. Le projet propose une abstraction plus contrôlable pour la musique générative : composer en symboles, puis créer en son. Les partitions rendent le système plus facile à inspecter, permettent des expériences déterministes ou semi-déterministes et offrent une interface commune aux personnes et aux agents.

Pour les développeurs, cela ouvre plusieurs flux de travail pratiques : générer par lots des variantes d’arrangement, évaluer les modifications au regard d’invariants musicaux, créer des outils d’écriture musicale conversationnels et conserver les artefacts de raisonnement associés à chaque version audio. Avec un GPU compatible BF16 disposant de 24 Go de VRAM et les modèles publiés, YuE2 offre une voie particulièrement ouverte entre un prompt de paroles et une production musicale modifiable et reproductible.

Source

multimodal-art-projection/YuE: YuE2 : génération musicale de pointe avec planification symbolique, reprises zero-shot et édition musicale agentique.