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.
| Argument | Défaut | Description |
|---|---|---|
prompt | requis | Description 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 / -d | auto | Indication 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.
| Argument | Défaut | Description |
|---|---|---|
source | requis | Chanson 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) |
--adherence | high | high = 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-lyrics | désactivé | Transcrire d'abord les paroles de la source et les utiliser |
--output / -o | cover.mp3 | Chemin 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
| Argument | Défaut | Description |
|---|---|---|
--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 / -o | song.mp3 (cover.mp3 pour les reprises) | Chemin de sortie ; les variantes reçoivent les suffixes _v1 / _v2 |
--no-wait | désactivé | Soumettre, imprimer le(s) ID de tâche, puis quitter |
--poll-interval | 10 | Secondes entre les vérifications de statut |
--timeout | 1800 | Temps d'attente maximal en secondes (la tâche continue côté serveur) |
--api-key | depuis env/config | Clé 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 60et n'écrivez qu'un couplet + un refrain. - Reprises : choisissez
highpour que la reprise reste reconnaissable ; choisissezmain_melodypour 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) × 15cré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.
--durationn'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(permissions0600) ou via la variable d'environnementNOIZ_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-musicethttps://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é.