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'environnementGEMINI_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
| Option | Défaut | Description |
|---|---|---|
--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 NOM | Kore | Nom de la voix pré-intégrée (voir tableau des Voix) |
--model NOM | gemini-3.1-flash-tts-preview | ID 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 N | 3 | Nombre maximal de tentatives en cas d'erreur API |
--trim / --no-trim | --trim | Rogner le silence aux limites des segments |
--format FORMAT | mp3 | Format de sortie : mp3 ou wav |
Codes de Sortie
| Code | Signification |
|---|---|
| 0 | Succès |
| 1 | Arguments ou variables d'environnement obligatoires manquants |
| 2 | Erreur API après épuisement des tentatives |
| 3 | ffmpeg non installé ou traitement échoué |
| 4 | Erreur 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 :
- Combinançant tous les segments en UNE SEULE invite avec des marqueurs
[pause de 3 secondes]entre eux - Générant un seul fichier audio continu en un seul appel API
- Détectant les intervalles de silence avec ffmpeg
silencedetecten 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. - Découpant aux points médians du silence en fichiers de segments individuels
- 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èle | Idéal pour |
|---|---|
gemini-3.1-flash-tts-preview | Le plus récent, le plus contrôlable, 200+ balises audio (par défaut) |
gemini-2.5-flash-preview-tts | Rapide, bonne qualité, usage général |
gemini-2.5-pro-preview-tts | Qualité la plus élevée, performances complexes |
Voix
30 voix pré-intégrées :
| Voix | Genre | Caractère | Hauteur |
|---|---|---|---|
| Achernar | Féminin | Douce | Plus aiguë |
| Achird | Masculin | Amicale | Médium grave |
| Algenib | Masculin | Grave | Grave |
| Algieba | Masculin | Lisse | Grave |
| Alnilam | Masculin | Ferme | Médium grave |
| Aoede | Féminin | Aérée | Médium |
| Autonoe | Féminin | Lumineuse | Médium |
| Callirrhoe | Féminin | Décontractée | Médium |
| Charon | Masculin | Informative | Grave |
| Despina | Féminin | Lisse | Médium |
| Enceladus | Masculin | Sifflante | Grave |
| Erinome | Féminin | Claire | Médium |
| Fenrir | Masculin | Excitable | Médium grave |
| Gacrux | Féminin | Mature | Médium |
| Iapetus | Masculin | Claire | Médium grave |
| Kore | Féminin | Ferme | Médium |
| Laomedeia | Féminin | Optimiste | Plus aiguë |
| Leda | Féminin | Jeune | Plus aiguë |
| Orus | Masculin | Ferme | Médium grave |
| Puck | Masculin | Optimiste | Médium |
| Pulcherrima | Masculin | Directe | Médium |
| Rasalgethi | Masculin | Informative | Médium |
| Sadachbia | Masculin | Vive | Grave |
| Sadaltager | Masculin | Érudite | Médium |
| Schedar | Masculin | Égale | Médium grave |
| Sulafat | Féminin | Chaude | Médium |
| Umbriel | Masculin | Décontractée | Médium grave |
| Vindemiatrix | Féminin | Douce | Médium |
| Zephyr | Féminin | Lumineuse | Plus aiguë |
| Zubenelgenubi | Masculin | Décontractée | Mé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