Compétence de jingle audio
Trois sous-modes. Le audioKind du projet actif détermine lequel est exécuté :
audioKind | Modèles vers lesquels nous routons | Focus du plan |
|---|---|---|
music | Suno V5 (par défaut), Udio, Lyria 2 | genre + tempo + instrumentation |
speech | MiniMax TTS (par défaut), Fish, ElevenLabs V3 | script + voix + rythme |
sfx | ElevenLabs SFX (par défaut), AudioCraft | texture + impact + durée |
Plan des ressources
audio-jingle/
├── SKILL.md
└── example.html
Workflow
Étape 0 — Lire les métadonnées du projet
audioKind, audioModel, audioDuration (secondes), et (pour la parole) voice. Ramifiez selon les valeurs connues et utilisez-les textuellement. Une métadonnée manquante n'est pas une instruction pour demander : déduisez une valeur par défaut sûre quand c'est possible, et émettez un formulaire de clarification uniquement lorsque la valeur manquante modifierait matériellement le résultat demandé ou empêcherait la génération.
Important : voice est spécifique au fournisseur. Pour minimax-tts, --voice doit être un voice_id MiniMax valide (par exemple male-qn-qingse), et non une description en langage naturel. Si vous ne disposez que d'un bref descriptif vocal en prose (« narratrice chaleureuse », « mandarin neutre »), conservez-le dans votre plan mais omettez --voice afin que l'ID vocal par défaut du démon s'applique, ou demandez à l'utilisateur de choisir un ID spécifique.
Étape 1 — Planifier
Musique
- Genre + artistes de référence (1–2)
- Tempo (BPM) + tonalité
- Instrumentation (3 à 5 instruments max)
- Chant : oui / non / fredonné / chœur
- Arc émotionnel (intro → refrain → outro)
Parole
- Script (final, pas de brouillon — le TTS exécute le texte littéralement)
- Voix cible + rythme
Pour MiniMax, cela signifie un
voice_idréel, pas une prose dans--voice - Indications de prononciation pour les noms propres / acronymes
Effets sonores
- Texture (impact / whoosh / ambiance / bruitage)
- Durée + enveloppe (attaque franche vs montée en douceur)
- Note de superposition (coup unique vs couche empilée)
Énoncez le plan en 2 à 3 phrases avant de dispatcher.
Étape 2 — Composer le prompt
Utilisez le format que le modèle en amont préfère. Liez audioDuration directement au paramètre d'API ; ne mettez jamais « fais-le durer 30 secondes » en prose.
Étape 3 — Dispatcher via le contrat média
Utilisez le répartiteur unifié — n'appelez pas les API des fournisseurs manuellement :
"$OD_NODE_BIN" "$OD_BIN" media generate \
--project "$OD_PROJECT_ID" \
--surface audio \
--audio-kind "<music|speech|sfx>" \
--model "<audioModel issu des métadonnées>" \
--duration <audioDuration secondes> \
[--voice "<ID vocal du fournisseur (parole uniquement)>"] \
--output "<slug-court>-<durée>s.mp3" \
--prompt "<prompt assemblé à l'étape 2 — pour la parole, le script littéral>"
La commande affiche une ligne de JSON : {"file": {"name": "...", ...}}. Les octets atterrissent dans le projet ; le FileViewer affiche automatiquement les contrôles de transport audio.
Étape 4 — Céder la main
Répondez avec : le résumé du plan, le nom de fichier renvoyé par le répartiteur, et une phrase sur ce qu'il faut essayer si l'utilisateur souhaite une variante (par exemple « remplacer le tempo de 92 à 108 BPM » plutôt que « rends-le différent »).
Règles strictes
- Le TTS exécute votre script littéralement. Relisez-le avant d'envoyer la commande — une seule virgule intempestive modifie la cadence.
- Le TTS MiniMax rejette les descriptions vocales en langage naturel dans
--voice. Utilisez unvoice_idMiniMax réel (par exemplemale-qn-qingse) ou omettez le drapeau et laissez le démon utiliser sa voix par défaut. - Musique : moins de 30 s = section unique ; 30 à 90 s = intro + corps ; 90 s et plus = arc complet. N'essayez pas de faire tenir une chanson en trois actes en 15 secondes.
- Effets sonores : privilégiez une couche bien décrite plutôt qu'un paragraphe de « rends ça cool » — les générateurs récompensent les mots de texture spécifiques.
- Enregistrez le fichier à chaque tour. Le lecteur audio affiche les contrôles de transport dès que le fichier atterrit.