Skip to content
cccskills
FreePublished on GitHub

gemini-tts

Generate speech from text using Google Gemini TTS. Use when creating voiceovers, narration, podcasts, or any text-to-speech task. Supports 70+ languages, style/emotion control via natural language prompts, and 30 prebuilt voices. Trigger on "Gemini TTS", "Google TTS", "voiceover", "narration", "text to speech", "speech generation".

The English summary is being prepared. Showing the original description.

memex-lab/product-launch-video-skill26 stars(GitHub 26 + cccskills 0)
Works withGemini

Run score Not tested

See how to install

Files included (3)

  • SKILL.md7.2 KB
  • references/prompting-guide.md4.9 KB
  • scripts/generate-tts.mjs17.2 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Gemini Text-to-Speech

Generate natural, expressive speech from text using Google Gemini TTS. Supports 70+ languages, 30 prebuilt voices, and style control via natural language prompts and audio tags.

Requirements: Node.js 18+, ffmpeg, @google/genai npm package, GEMINI_API_KEY env var.

Available Scripts

  • scripts/generate-tts.mjs — All-in-one TTS generator with single-request consistency, silence-based splitting, and automatic trimming.

Quick Start

Single text to speech

npm install @google/genai
GEMINI_API_KEY=your-key node scripts/generate-tts.mjs \
  --text "Hello, welcome to our product!" \
  --output-dir public/vo \
  --voice Kore

Multi-segment voiceover (consistent voice)

Create a segments.json:

[
  { "id": "intro", "text": "Welcome to our product launch." },
  { "id": "features", "text": "Here are the three features you will love." },
  { "id": "close", "text": "Get started today at our website." }
]

Run:

GEMINI_API_KEY=your-key node scripts/generate-tts.mjs \
  --segments segments.json \
  --output-dir public/vo \
  --voice Kore \
  --director-notes "Tone: Warm, confident, inspiring. Style: Professional narrator with a vocal smile. Accent: Neutral American English. Pacing: Moderate."

Output (JSON to stdout):

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

Script Options

FlagDefaultDescription
--segments FILE—JSON file with [{id, text}] segment definitions
--text TEXT—Single text to generate (alternative to --segments)
--output-dir DIR—Output directory for audio files (required)
--voice NAMEKorePrebuilt voice name (see Voices table)
--model NAMEgemini-3.1-flash-tts-previewGemini TTS model ID
--director-notes TEXT—Performance guidance: style, pacing, accent, breathing, articulation. Does not control gender/age (use --voice for that).
--retries N3Max retry attempts for API errors
--trim / --no-trim--trimTrim silence from segment boundaries
--format FORMATmp3Output format: mp3 or wav

Exit Codes

CodeMeaning
0Success
1Missing required arguments or env vars
2API error after retries exhausted
3ffmpeg not installed or processing failed
4File I/O error

How It Works (Multi-Segment)

Gemini TTS does NOT guarantee voice consistency across separate API requests. The script solves this by:

  1. Combining all segments into ONE prompt with [3 second pause] markers between them
  2. Generating a single continuous audio file in one API call
  3. Detecting silence gaps with ffmpeg silencedetect using adaptive thresholds (starts at noise=-35dB, d=1.5s, progressively relaxes). If an exact match is found, uses it directly. If a threshold jump occurs (too few → too many), regenerates audio with faster speech pacing to make inter-segment pauses more distinct, then retries detection.
  4. Splitting at silence midpoints into individual segment files
  5. Trimming residual silence padding (~1.5s per side) from each segment, keeping 0.15s breathing room

Models

ModelBest For
gemini-3.1-flash-tts-previewLatest, most controllable, 200+ audio tags (default)
gemini-2.5-flash-preview-ttsFast, good quality, general use
gemini-2.5-pro-preview-ttsHighest quality, complex performances

Voices

30 prebuilt voices:

VoiceGenderCharacterPitch
AchernarFemaleSoftHigher
AchirdMaleFriendlyLower middle
AlgenibMaleGravellyLower
AlgiebaMaleSmoothLower
AlnilamMaleFirmLower middle
AoedeFemaleBreezyMiddle
AutonoeFemaleBrightMiddle
CallirrhoeFemaleEasy-goingMiddle
CharonMaleInformativeLower
DespinaFemaleSmoothMiddle
EnceladusMaleBreathyLower
ErinomeFemaleClearMiddle
FenrirMaleExcitableLower middle
GacruxFemaleMatureMiddle
IapetusMaleClearLower middle
KoreFemaleFirmMiddle
LaomedeiaFemaleUpbeatHigher
LedaFemaleYouthfulHigher
OrusMaleFirmLower middle
PuckMaleUpbeatMiddle
PulcherrimaMaleForwardMiddle
RasalgethiMaleInformativeMiddle
SadachbiaMaleLivelyLower
SadaltagerMaleKnowledgeableMiddle
SchedarMaleEvenLower middle
SulafatFemaleWarmMiddle
UmbrielMaleEasy-goingLower middle
VindemiatrixFemaleGentleMiddle
ZephyrFemaleBrightHigher
ZubenelgenubiMaleCasualLower middle

Director's Notes (--director-notes)

Performance guidance for the selected voice. Define only what matters — overspecifying limits the model's creativity and can worsen results.

The three most common directions are Style, Pacing, and Accent, but you can include any custom instructions relevant to the performance.

  • Style — Emotional quality and delivery character. Be descriptive: "Infectious enthusiasm — the listener should feel part of something exciting" works better than just "energetic". You can layer characteristics and use voiceover industry terms like "vocal smile".
  • Pacing — Overall speed and rhythm variation. Can range from "Speak as fast as possible" to "Incredibly slow and liquid, words bleed into each other, zero urgency".
  • Accent — Be specific. "British English as heard in Croydon, England" works much better than "British accent".
--director-notes "Style: Enthusiastic and sassy GenZ beauty YouTuber. Pacing: Extremely fast, rapid delivery like short-form video influencers. Accent: Southern California valley girl from Laguna Beach."

Audio Tags

Inline [brackets] in segment text for per-word control. Override director-notes locally.

[whispers] [shouting] [excited] [serious] [short pause] [laughs] [very fast] [very slow] [sarcastic] [curious]

Creative tags work too: [like dracula], [whispering conspiratorially]

Example: "[excited] This changes everything! [short pause] Let me show you how."

References

  • Prompting Guide — Advanced prompt engineering for style, emotion, and accent

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Design and build spectacular, high-impact product launch videos using Remotion (React). Use this skill whenever the user wants to create a product launch video, promotional video, demo video, feature announcement video, brand reveal, or any motion-graphics-driven product showcase. Also trigger when the user mentions "launch video," "promo video," "product trailer," "product intro," "feature reveal," storyboarding for video, or wants to turn a product into a cinematic visual experience — even if they don't explicitly say "launch video."

The English summary is being prepared. Showing the original description.

memex-lab/product-launch-video-skill26Updated Jun 1, 2026

See all skills by memex-lab

Report a problem with this skill