Créer une chanson (MiniMax Music 3)
Utilise MiniMax Music 3, le modèle ouvert de génération musicale le plus récent que j'ai trouvé. Une comparaison des licences avec d'autres candidats se trouve dans references/models.md.
Le répertoire de ce skill est noté $SKILL (affiché comme Base directory lors du chargement).
Prérequis
- Fonctionne sur une seule carte GPU (version diffusers). VRAM nécessaire : ~24 Go sans optimisation, ~22 Go avec
--offload cpu, ~8 Go avec--offload stream(plus lent). - Testé avec : AMD Radeon AI PRO R9700 (32 Go, ROCm 6.4, PyTorch 2.9.1). Une chanson de 60 secondes a pris environ 5 minutes (5 fois le temps réel). Non testé sur GPU NVIDIA (l'implémentation officielle cible CUDA).
- Les poids pèsent environ 27 Go. Vérifiez d'abord l'espace disque disponible.
- La méthode officielle rapide (SGLang-Omni) nécessite 2 GPU CUDA, elle n'est pas utilisée ici.
1. Préparer l'environnement (première fois uniquement)
Si vous avez déjà un environnement, utilisez-le (par exemple .venv* sous le dossier cloné MiniMax-Music3). Sinon, créez-en un.
git clone https://github.com/MiniMax-AI/MiniMax-Music3.git && cd MiniMax-Music3
uv venv -p 3.12 .venv && source .venv/bin/activate
# NVIDIA : uv pip install torch torchaudio
# AMD : uv pip install torch torchaudio --index-url https://download.pytorch.org/whl/rocm6.4
uv pip install "diffusers==0.41.0" transformers accelerate soundfile huggingface_hub
# Ne pas télécharger les fichiers réservés à la version SGLang. Utiliser --exclude pour chaque motif.
hf download MiniMaxAI/MiniMax-Music3 --exclude "qwen_7B/qwen_7B/model-*" \
--exclude flowmatching_vae.pth --exclude dav.pth --exclude "figures/*"
- La fiche modèle mentionne une procédure avec un commit non fusionné de diffusers, mais cela empêche le chargement du
transformer. Utilisez une version fusionnée (0.40.0 ou ultérieur, 0.41.0 testé). - Si le cache Hugging Face (
HF_HOME) manque d'espace, redirigezHF_HOMEvers un emplacement avec suffisamment d'espace libre. - Ne pas activer
HF_HUB_OFFLINE=1: cela ferait échouer le chargement detransformer.
2. Écrire les paroles et la description de la chanson
Créez song.json.
{
"name": "yoru-no-machi",
"prompt": "Global Metadata: Japanese city pop, mid-tempo around 100 BPM, nostalgic night-drive mood that lifts into a bright chorus; polished 80s-inspired production. Vocal Details: warm female lead vocal singing in Japanese, airy in the verse, fuller with light harmonies in the chorus. Arrangement: intro with electric piano and slap bass; verse adds tight drums and muted guitar; chorus opens up with synth brass and lush pads; short outro on electric piano.",
"lyrics": "[intro]\n\n[verse]\n夜の街を ひとり歩く\nネオンの色が 揺れている\n\n[chorus]\nこのまま 朝まで\n君の声 探してる\n\n[outro]",
"duration": 180
}
- La description musicale (
prompt) doit être en anglais, divisée en trois parties : Global Metadata (genre, tempo, émotion, production), Vocal Details (genre de voix, timbre, style de chant, harmonies), Arrangement (entrées et sorties d'instruments par section). - Indiquez obligatoirement le genre et le timbre de la voix. Sinon, la voix peut disparaître et il ne resterait qu'un accompagnement instrumental. Pour chanter en japonais, ajoutez
singing in Japanese. - Pour une description plus détaillée, vous pouvez utiliser le skill officiel
music-caption-rewriterde MiniMax (npx skills add MiniMax-AI/MiniMax-Music3 --skill music-caption-rewriter, ou copier le dossierskills/music-caption-rewritercloné dans~/.claude/skills/). - Les paroles (
lyrics) peuvent être écrites en japonais (kanji/kana) telles quelles (testé). Les balises[intro],[verse],[pre-chorus],[chorus],[bridge],[instrumental],[solo],[outro]doivent être placées sur des lignes séparées. Tout texte figurant sur la même ligne qu'une balise sera ignoré (le script le détecte et bloque). - Gardez les lignes courtes et uniformes en longueur à des positions similaires. Séparez les sections par une ligne vide (astuce générale pour les modèles de génération musicale, non spécifiquement vérifié pour MiniMax Music 3).
durationest la durée maximale en secondes (10 à 300). Le modèle peut s'arrêter plus tôt. L'ajout d'un[intro]tend à allonger l'introduction (environ 25 secondes sur un essai de 60 secondes).- N'utilisez pas de noms de chansons ou d'artistes existants pour imiter leur style (interdit par la licence, voir ci-dessous).
3. Générer
python $SKILL/scripts/generate.py song.json --out-dir songs/ --seeds 1 2 3
- Les mêmes paramètres avec des seeds différentes produiront des chansons différentes. Générez 2 à 3 propositions et laissez l'utilisateur écouter et choisir. Claude ne pouvant pas entendre l'audio, ne décidez pas par vous-même de la qualité.
- L'opération peut être longue (environ 5 fois le temps réel sur R9700, plus le chargement), donc exécutez-la en arrière-plan et attendez la fin.
- Sorties :
<name>-seed<N>.wav(stéréo 44,1 kHz), un fichier.jsoncorrespondant (seed, durée, prompt, paroles, temps d'exécution), et<name>-lyrics.txt(paroles sans balises pour affichage). - Vérifiez si les paroles sont bien chantées en utilisant la transcription (nécessite
faster-whisper). Attention : sur les parties instrumentales, Whisper peut répéter les paroles par erreur.
python $SKILL/scripts/check_lyrics.py songs/*.wav --language ja
4. Créer un clip musical (MV)
Passez la chanson sélectionnée directement au mode MV du skill biim-motion.
assets.music: le fichier WAV choisimusicLyrics: contenu du fichier<name>-lyrics.txt(sans balises)musicMood: résumé court de l'ambiance duprompten japonais- Dans
reports/delivery.mddu MV, enregistrez dans les matériaux utilisés : « Généré avec MiniMax Music 3 (seed,prompt,lyrics) ».
Licence (MiniMax-Music3 Community License)
Le texte original se trouve ici : https://huggingface.co/MiniMaxAI/MiniMax-Music3/blob/main/LICENSE . Voici les points essentiels (ce n'est pas un conseil juridique).
- Si vous utilisez le modèle dans un produit ou service commercial, vous devez afficher « MiniMax-Music3 » de manière visible sur l'interface. Si le chiffre d'affaires annuel dépasse 20 millions de dollars, une autorisation écrite supplémentaire de MiniMax est requise.
- Respectez la Politique d'Utilisation Acceptable ci-jointe et ne violez pas les droits de propriété intellectuelle de tiers.
- Si vous prévoyez une utilisation commerciale, informez l'utilisateur de ces conditions avant la génération.