Communitygithub.com

memex-lab/product-launch-video-skill

Générez un discours naturel à partir de texte avec Google Gemini TTS. Idéal pour voix-off, narration, podcasts ou toute tâche de synthèse vocale. Prend en charge 70+ langues, 30 voix pré-intégrées et un contrôle du style via le langage naturel.

Qu'est-ce que product-launch-video-skill ?

Cette compétence permet de générer un discours expressif et naturel à partir de texte grâce à Google Gemini TTS, avec un accent particulier sur la cohérence vocale pour les productions multi-segments (comme les voix-off de vidéos produit). Elle prend en charge plus de 70 langues, 30 voix pré-intégrées, et offre un contrôle fin du style, de l'émotion, du rythme et de l'accent via des invites en langage naturel ou des balises audio inline. La compétence inclut un script principal (`scripts/generate-tts.mjs`) qui résout le problème de cohérence vocale entre les segments en combinant toutes les séquences en une seule requête API, puis en découpant l'audio généré en utilisant la détection de silence. Elle est destinée aux développeurs et créateurs de contenu utilisant des outils comme Claude Code, Cursor ou Codex, et nécessite Node.js 18+, ffmpeg, le package `@google/genai` et la variable d'environnement `GEMINI_API_KEY`. Elle est déployée en tant que compétence Markdown directement utilisable via une interface de ligne de commande.

Compatible avec~Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/memex-lab/product-launch-video-skill/tree/main/skills/gemini-tts

Demander à votre IA préférée

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

Documentation

Synthèse Vocale Gemini

Générez un discours naturel et expressif à partir de texte avec Google Gemini TTS. Prend en charge 70+ langues, 30 voix pré-intégrées et un contrôle du style via des invites en langage naturel et des balises audio.

Prérequis : Node.js 18+, ffmpeg, package npm @google/genai, variable d'environnement GEMINI_API_KEY.

Scripts Disponibles

  • scripts/generate-tts.mjs — Générateur TTS tout-en-un avec cohérence par requête unique, découpage basé sur le silence et rognage automatique.

Démarrage Rapide

Texte unique vers parole

npm install @google/genai
GEMINI_API_KEY=votre-clé node scripts/generate-tts.mjs \
  --text "Bonjour, bienvenue dans notre produit !" \
  --output-dir public/vo \
  --voice Kore

Voix-off multi-segments (voix cohérente)

Créez un fichier segments.json :

[
  { "id": "intro", "text": "Bienvenue dans notre lancement produit." },
  { "id": "fonctionnalites", "text": "Voici les trois fonctionnalités que vous allez adorer." },
  { "id": "conclusion", "text": "Commencez dès aujourd'hui sur notre site web." }
]

Exécutez :

GEMINI_API_KEY=votre-clé node scripts/generate-tts.mjs \
  --segments segments.json \
  --output-dir public/vo \
  --voice Kore \
  --director-notes "Ton : chaleureux, confiant, inspirant. Style : narrateur professionnel avec un sourire vocal. Accent : anglais américain neutre. Rythme : modéré."

Sortie (JSON sur stdout) :

{
  "success": true,
  "segments": [
    { "id": "intro", "file": "public/vo/vo-intro.mp3", "duration": 3.25 },
    { "id": "fonctionnalites", "file": "public/vo/vo-fonctionnalites.mp3", "duration": 4.10 },
    { "id": "conclusion", "file": "public/vo/vo-conclusion.mp3", "duration": 2.80 }
  ],
  "totalDuration": 10.15,
  "fullAudioFile": "public/vo/vo-full.wav"
}

Options du Script

OptionDéfautDescription
--segments FICHIER—Fichier JSON avec les définitions [{id, text}] des segments
--text TEXTE—Texte unique à générer (alternative à --segments)
--output-dir RÉPERTOIRE—Répertoire de sortie pour les fichiers audio (obligatoire)
--voice NOMKoreNom de la voix pré-intégrée (voir tableau des Voix)
--model NOMgemini-3.1-flash-tts-previewID du modèle Gemini TTS
--director-notes TEXTE—Instructions de performance : style, rythme, accent, respiration, articulation. Ne contrôle pas le genre/l'âge (utilisez --voice pour cela).
--retries N3Nombre maximal de tentatives en cas d'erreur API
--trim / --no-trim--trimRogner le silence aux limites des segments
--format FORMATmp3Format de sortie : mp3 ou wav

Codes de Sortie

CodeSignification
0Succès
1Arguments ou variables d'environnement obligatoires manquants
2Erreur API après épuisement des tentatives
3ffmpeg non installé ou traitement échoué
4Erreur d'entrée/sortie fichier

Comment ça Fonctionne (Multi-Sequences)

Gemini TTS ne GARANTIT PAS la cohérence vocale entre des requêtes API séparées. Le script résout ce problème en :

  1. Combinançant tous les segments en UNE SEULE invite avec des marqueurs [pause de 3 secondes] entre eux
  2. Générant un seul fichier audio continu en un seul appel API
  3. Détectant les intervalles de silence avec ffmpeg silencedetect en utilisant des seuils adaptatifs (démarre à noise=-35dB, d=1.5s, puis relâche progressivement). Si une correspondance exacte est trouvée, l'utilise directement. Si un saut de seuil se produit (trop peu → trop d'intervalles), régénère l'audio avec un rythme de parole plus rapide pour rendre les pauses inter-segments plus distinctes, puis retente la détection.
  4. Découpant aux points médians du silence en fichiers de segments individuels
  5. Rognant le silence résiduel (~1.5s de chaque côté) de chaque segment, en conservant 0.15s d'espace de respiration

Modèles

ModèleIdéal pour
gemini-3.1-flash-tts-previewLe plus récent, le plus contrôlable, 200+ balises audio (par défaut)
gemini-2.5-flash-preview-ttsRapide, bonne qualité, usage général
gemini-2.5-pro-preview-ttsQualité la plus élevée, performances complexes

Voix

30 voix pré-intégrées :

VoixGenreCaractèreHauteur
AchernarFémininDoucePlus aiguë
AchirdMasculinAmicaleMédium grave
AlgenibMasculinGraveGrave
AlgiebaMasculinLisseGrave
AlnilamMasculinFermeMédium grave
AoedeFémininAéréeMédium
AutonoeFémininLumineuseMédium
CallirrhoeFémininDécontractéeMédium
CharonMasculinInformativeGrave
DespinaFémininLisseMédium
EnceladusMasculinSifflanteGrave
ErinomeFémininClaireMédium
FenrirMasculinExcitableMédium grave
GacruxFémininMatureMédium
IapetusMasculinClaireMédium grave
KoreFémininFermeMédium
LaomedeiaFémininOptimistePlus aiguë
LedaFémininJeunePlus aiguë
OrusMasculinFermeMédium grave
PuckMasculinOptimisteMédium
PulcherrimaMasculinDirecteMédium
RasalgethiMasculinInformativeMédium
SadachbiaMasculinViveGrave
SadaltagerMasculinÉruditeMédium
SchedarMasculinÉgaleMédium grave
SulafatFémininChaudeMédium
UmbrielMasculinDécontractéeMédium grave
VindemiatrixFémininDouceMédium
ZephyrFémininLumineusePlus aiguë
ZubenelgenubiMasculinDécontractéeMédium grave

Notes du Réalisateur (--director-notes)

Instructions de performance pour la voix sélectionnée. Ne définissez que ce qui compte — une surspécification limite la créativité du modèle et peut dégrader les résultats.

Les trois orientations les plus courantes sont le Style, le Rythme et l'Accent, mais vous pouvez inclure toute instruction personnalisée pertinente pour la performance.

  • Style — Qualité émotionnelle et caractère de la prestation. Soyez descriptif : "Enthousiasme contagieux — l'auditeur doit se sentir partie de quelque chose d'excitant" fonctionne mieux que simplement "énergique". Vous pouvez superposer des caractéristiques et utiliser des termes du métier de voix-off comme "sourire vocal".
  • Rythme — Vitesse globale et variation du rythme. Peut aller de "Parler le plus vite possible" à "Incroyablement lent et liquide, les mots se mélangent les uns aux autres, zéro urgence".
  • Accent — Soyez précis. "Anglais britannique tel qu'entendu à Croydon, Angleterre" fonctionne beaucoup mieux que "Accent britannique".
--director-notes "Style : YouTubeur beauté GenZ enthousiaste et impertinent. Rythme : Extrêmement rapide, débit rapide comme les influenceurs vidéos courtes. Accent : Valley girl de Californie du Sud de Laguna Beach."

Balises Audio

Utilisez des [crochets] inline dans le texte des segments pour un contrôle mot par mot. Remplacez localement les notes du réalisateur.

[chuchotements] [cri] [excité] [sérieux] [courte pause] [rires] [très rapide] [très lent] [sarcastique] [curieux]

Les balises créatives fonctionnent aussi : [comme dracula], [chuchotant de manière conspiratrice]

Exemple : "[excité] Ceci change tout ! [courte pause] Laissez-moi vous montrer comment."

Références

  • Guide d'incitation — Ingénierie d'incitation avancée pour le style, l'émotion et l'accent

Individual skills in this repo

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

Skills associés