Communitygithub.com

NoizAI/text-to-music

Génère des chansons avec voix et accompagnement à partir d'une description textuelle et/ou de paroles, ou crée une reprise d'une chanson existante dans un nouveau style.

Qu'est-ce que text-to-music ?

Cette compétence NoizAI permet de générer de la musique avec chant, en deux variantes à chaque requête. Deux modes sont disponibles : « Générer » (créer une nouvelle chanson à partir d'une description et de paroles) et « Reprise » (réinterpréter une chanson existante dans un nouveau style tout en conservant sa mélodie, avec possibilité de changer les paroles). Elle prend en charge les paroles en chinois, anglais ou mixte, et permet d'utiliser un fichier audio de référence pour modeler le style vocal ou musical. Les sorties sont des fichiers MP3 (variantes _v1 et _v2), et les paroles générées côté serveur sont sauvegardées. Utile pour les développeurs intégrant la génération musicale dans leurs outils (Claude Code, Cursor, Codex) via Python, avec gestion des tâches asynchrones (statut, reprise). La facturation se fait par tâche (crédits ou paiement à l'utilisation).

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/NoizAI/skills/tree/HEAD/skills/text-to-music

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Texte vers musique

Deux façons de créer une chanson avec voix + accompagnement, enregistrée au format MP3. Chaque requête produit deux variantes.

  • Générer — une nouvelle chanson à partir d'une description musicale et de paroles.
  • Reprendre — réinterpréter une chanson existante dans un nouveau style, en conservant sa mélodie. Les paroles peuvent être les originales (reconnues automatiquement) ou de nouvelles.

Déclencheurs

  • faire une chanson / générer de la musique / texte vers musique / composer
  • transformer ces paroles en chanson / chanter ça / jingle / générique / chanson d'anniversaire
  • reprendre cette chanson / faire une version jazz / réinterpréter dans un autre style
  • 写歌 / 生成音乐 / 作曲 / 唱首歌 / 歌词谱曲 / 翻唱 / 改编 / 换个风格唱

Générer — nouvelle chanson à partir d'un texte

Une requête nécessite un prompt (la description musicale) et exactement une source de paroles :

# Laissez le serveur écrire les paroles à partir d'un thème
python3 skills/text-to-music/scripts/t2m.py "indie pop entraînant, guitares lumineuses, 120 BPM" \
  --lyrics-prompt "une chanson sur les road trips d'été entre amis"

# Utilisez vos propres paroles (inline ou depuis un fichier)
python3 skills/text-to-music/scripts/t2m.py "ballade mandopop, piano et cordes" \
  --lyrics $'[Couplet]\nLa pluie s'est arrêtée dehors\n[Refrain]\nJe t'attends encore' --vocal-gender Female --title "La pluie s'est arrêtée"
python3 skills/text-to-music/scripts/t2m.py "lo-fi hip hop, doux, craquement de vinyle" \
  --lyrics-file chanson.txt --duration 120 -o chill.mp3

# Modeler la voix/le style sur une chanson de référence (fichier local ≤20 Mo ou URL publique)
python3 skills/text-to-music/scripts/t2m.py "synth-pop rêveuse" --lyrics-file chanson.txt --ref-audio ./ref.mp3

Sortie : chanson_v1.mp3 et chanson_v2.mp3 (ou <base>_v1.mp3 / <base>_v2.mp3 avec -o). Quand les paroles sont écrites par le serveur, elles sont également sauvegardées dans <base>_lyrics.txt.

ArgumentDéfautDescription
promptrequisDescription musicale : genre, ambiance, instruments, tempo (≤1500 caractères)
--lyrics / -l—Texte des paroles ; les marqueurs [Couplet], [Refrain], [Pont] aident à structurer
--lyrics-file—Fichier .txt UTF-8 avec les paroles (≤64 Ko)
--lyrics-prompt—Thème pour l'écriture des paroles côté serveur
--tags—Étiquettes de style, séparées par des virgules (≤50 caractères)
--negative-tags—Styles à éviter
--duration / -dautoIndication de durée cible : 60, 120 ou 180 secondes. Une indication, pas une garantie.
--ref-audio—Chanson de référence, chemin local ou URL publique

--lyrics, --lyrics-file et --lyrics-prompt sont mutuellement exclusifs ; l'un d'eux est requis.

Reprise — réinterpréter une chanson existante

Nécessite la chanson source, les paroles et une description du nouveau son (--style et/ou --prompt) :

# Mêmes paroles, nouveau style : reconnaître les paroles de l'originale, puis la reprendre
python3 skills/text-to-music/scripts/t2m.py cover original.mp3 \
  --style "jazz, voix féminine smoky" --recognize-lyrics -o reprise_jazz.mp3

# Nouvelles paroles sur la mélodie originale, arrangement plus libre
python3 skills/text-to-music/scripts/t2m.py cover https://exemple.com/chanson.mp3 \
  --prompt "folk acoustique, guitare fingerpicking, intimiste" --lyrics-file nouvelles_paroles.txt \
  --adherence main_melody --vocal-gender Male

# Reconnaître les paroles uniquement (pour les revoir ou les modifier avant la reprise)
python3 skills/text-to-music/scripts/t2m.py lyrics original.mp3 -o paroles.txt

Flux recommandé lorsque l'utilisateur souhaite modifier les paroles : exécuter lyrics → modifier le fichier → cover --lyrics-file.

ArgumentDéfautDescription
sourcerequisChanson originale : fichier local (≤100 Mo ; mp3/wav/m4a/aac/flac/ogg) ou URL publique
--style / -s—Étiquettes de style courtes, ex. "rock, voix masculine" (≤50 caractères)
--prompt / -p—Description plus longue du son de la reprise (≤1500 caractères)
--adherencehighhigh = suivre l'arrangement original de près ; main_melody = ne garder que la mélodie principale, plus de liberté
--lyrics / -l—Paroles à chanter
--lyrics-file—Fichier .txt UTF-8 avec les paroles (≤64 Ko)
--recognize-lyricsdésactivéTranscrire d'abord les paroles de la source et les utiliser
--output / -ocover.mp3Chemin de sortie ; les variantes reçoivent les suffixes _v1 / _v2

Au moins l'un de --style / --prompt est requis ; une source de paroles exacte est requise.

Arguments partagés

ArgumentDéfautDescription
--title—Titre de la chanson (≤80 caractères)
--vocal-gender—Male ou Female
--vocal-timbre—Description libre de la voix, ex. "alto chaleureux et rauque" (≤50 caractères)
--output / -osong.mp3 (cover.mp3 pour les reprises)Chemin de sortie ; les variantes reçoivent les suffixes _v1 / _v2
--no-waitdésactivéSoumettre, imprimer le(s) ID de tâche, puis quitter
--poll-interval10Secondes entre les vérifications de statut
--timeout1800Temps d'attente maximal en secondes (la tâche continue côté serveur)
--api-keydepuis env/configClé API Noiz (remplace la clé stockée)

Reprendre / Vérifier les tâches

La génération imprime deux gen_product_id ; une reprise imprime un task_id. Si l'attente expire ou si vous avez utilisé --no-wait, reprenez avec :

python3 skills/text-to-music/scripts/t2m.py status <id_v1> <id_v2> -o chanson.mp3
python3 skills/text-to-music/scripts/t2m.py status --cover <task_id> -o reprise.mp3
python3 skills/text-to-music/scripts/t2m.py status --cover <task_id> --no-wait   # juste imprimer le statut

Le statut passe par submitted → running → succeeded / failed. Les reprises indiquent également un stage (l'analyse s'exécute avant le chant, donc les reprises prennent plus de temps). Les URL de téléchargement expirent après environ 24h ; réexécutez status pour en obtenir de nouvelles.

Rédiger de bons prompts

  • Prompt / style = le son : genre + ambiance + instrumentation + tempo. "pop orchestrale cinématographique, cordes envolées, 90 BPM, plein d'espoir".
  • Paroles : gardez les sections courtes et étiquetez-les. Les paroles en chinois, anglais ou mixte fonctionnent toutes.
  • Chansons courtes : pour les jingles ou les salutations, passez -d 60 et n'écrivez qu'un couplet + un refrain.
  • Reprises : choisissez high pour que la reprise reste reconnaissable ; choisissez main_melody pour un changement de genre plus important.
  • Pas satisfait ? Réexécutez — chaque exécution donne deux nouvelles variantes.

Coût

  • Les chansons et reprises sont facturées une fois par tâche (pas par variante) : ceil(durée de la variante la plus longue en secondes) × 15 crédits, facturés après la réussite des deux variantes. Une chanson de 2 minutes coûte environ 1 800 crédits. Si les crédits de l'abonnement ne couvrent pas la totalité de la tâche, elle est facturée en paiement à l'utilisation à 0,00015 $/s. Le script imprime le montant facturé à la fin.
  • Reconnaissance des paroles (lyrics / --recognize-lyrics) : 100 crédits (ou 0,001 $ en paiement à l'utilisation), facturés uniquement lorsque des voix sont détectées.

Limites de débit : 5 soumissions par minute par clé par endpoint ; interrogation du statut 60 par minute.

Limitations

  • La musique purement instrumentale n'est pas prise en charge — les paroles sont toujours requises.
  • --duration n'est qu'une indication ; la durée réelle peut différer. Les reprises suivent la durée de la source.
  • Les prompts ou paroles contenant du contenu sensible sont rejetés (code=400).

Configuration

python3 skills/text-to-music/scripts/t2m.py config --set-api-key VOTRE_CLE
# ou
export NOIZ_API_KEY=VOTRE_CLE

Obtenez votre clé API sur developers.noiz.ai.

Prérequis

  • Python 3.6+
  • Paquet requests : uv pip install requests
  • Clé API Noiz depuis developers.noiz.ai

Sécurité et divulgation des données

  • Clé API : Stockée dans ~/.config/noiz/api_key (permissions 0600) ou via la variable d'environnement NOIZ_API_KEY.
  • Réseau : Les prompts, paroles et tout audio source/référence (téléchargement de fichier ou URL) sont envoyés à https://noiz.ai/v1/text-to-music et https://noiz.ai/v1/text-to-music/cover* ; le statut des tâches est interrogé depuis les mêmes points de terminaison. Aucune autre donnée n'est transmise.
  • Sortie : Les MP3 générés (et les fichiers texte de paroles) sont téléchargés depuis des URL de stockage signées Noiz et sauvegardés dans le chemin de sortie. Aucun autre fichier n'est modifié.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Skills associés