sonichi/sutando/skills/gemini-tts/SKILL.md
gemini-tts
Render text to mp3 via Google Gemini Flash TTS. Free-tier eligible (1500 req/day). Use for video narration, demo voiceovers, audio notes. Parallels openai-tts; default for make-viral-video.
- Source repository stars
- 359
- Declared platforms
- 0
- Static risk flags
- 1
- Last source update
- 2026-07-28
- Source checked
- 2026-07-28
Decision brief
What it does—and where it fits
Synthesize speech via Google's gemini-2.5-flash-preview-tts (or -pro-tts / -lite-preview-tts per env override). Reads GEMINIAPIKEY from .env.
Not for
- Tasks that require unconfirmed production actions or broad system permissions.
- Environments where the pinned source and install steps cannot be inspected.
Compatibility matrix
Platform support, with evidence labels
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
Inspect first. Install second.
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/sonichi/sutando --skill "skills/gemini-tts"Inspect the Agent Skill "gemini-tts" from https://github.com/sonichi/sutando/blob/6a8f0fccd32e5aa620a3572c8885544f144bb6fe/skills/gemini-tts/SKILL.md at commit 6a8f0fccd32e5aa620a3572c8885544f144bb6fe. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
What the source asks the agent to do
- 01
Voices
Aoede (default — alto, neutral), Charon (baritone, news-anchor), Kore (mid, expressive), Puck (high, conversational). Per Lucy's 2026-05-09 testing: Aoede is the closest match to OpenAI's sage.
Aoede (default — alto, neutral), Charon (baritone, news-anchor), Kore (mid, expressive), Puck (high, conversational). Per Lucy's 2026-05-09 testing: Aoede is the closest match to OpenAI's sage. - 02
Audio tags for expression
Inline bracket tags like [whispers], [excitedly], [slowly] are interpreted as stylistic direction, not spoken literally. Empirically verified against gemini-2.5-flash-preview-tts (per PR 646 comment): [whispers] hello → 1.05s audio; hello alone → 1.01s. If the tag were spoken li…
Inline bracket tags like [whispers], [excitedly], [slowly] are interpreted as stylistic direction, not spoken literally. Empirically verified against gemini-2.5-flash-preview-tts (per PR 646 comment): [whispers] hello →… - 03
Model selection
Default: gemini-2.5-flash-preview-tts (free tier, 1500 req/day, $0 within quota).
gemini-2.5-pro-tts — paid, higher fidelitygemini-2.5-flash-lite-preview-tts — preview, fastergemini-3.1-flash-tts-preview — preview - 04
Examples
Default output path: results/gemini-tts-{epoch}.mp3.
Default output path: results/gemini-tts-{epoch}.mp3.
Permission review
Static risk signals and limitations
Runs scripts
The documentation asks the agent to run terminal commands or scripts.
bash "$SKILL_DIR/scripts/synthesize.sh" -- "[whispers] Pull request 691 has landed."Runs scripts
The documentation asks the agent to run terminal commands or scripts.
bash "$SKILL_DIR/scripts/synthesize.sh" -- "Hello, this is Sutando."Evidence record
Why each signal appears
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 70/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 359 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Provenance and original SKILL.md
- Repository
- sonichi/sutando
- Skill path
- skills/gemini-tts/SKILL.md
- Commit
- 6a8f0fccd32e5aa620a3572c8885544f144bb6fe
- License
- MIT
- Collected
- 2026-07-28
- Default branch
- main
View the original SKILL.md
Gemini TTS
Synthesize speech via Google's gemini-2.5-flash-preview-tts (or -pro-tts / -lite-preview-tts per env override). Reads GEMINI_API_KEY from .env.
This is offline synthesis — distinct from voice-agent's bidirectional Gemini Live audio. Same model family, different surface (POST text → get audio bytes back, no streaming).
Usage: /gemini-tts [text]
ARGUMENTS: $ARGUMENTS
Voices
Aoede (default — alto, neutral), Charon (baritone, news-anchor), Kore (mid, expressive), Puck (high, conversational). Per Lucy's 2026-05-09 testing: Aoede is the closest match to OpenAI's sage.
Audio tags for expression
Inline bracket tags like [whispers], [excitedly], [slowly] are interpreted as stylistic direction, not spoken literally. Empirically verified against gemini-2.5-flash-preview-tts (per PR #646 comment): [whispers] hello → 1.05s audio; hello alone → 1.01s. If the tag were spoken literally as 8 words, the clip would be ~5× longer.
bash "$SKILL_DIR/scripts/synthesize.sh" -- "[whispers] Pull request 691 has landed."
Model selection
Default: gemini-2.5-flash-preview-tts (free tier, 1500 req/day, $0 within quota).
Override via GEMINI_TTS_MODEL env var:
gemini-2.5-pro-tts— paid, higher fidelitygemini-2.5-flash-lite-preview-tts— preview, fastergemini-3.1-flash-tts-preview— preview
Examples
bash "$SKILL_DIR/scripts/synthesize.sh" -- "Hello, this is Sutando."
bash "$SKILL_DIR/scripts/synthesize.sh" --voice Charon --out /tmp/intro.mp3 -- "Hi."
GEMINI_TTS_MODEL=gemini-2.5-pro-tts bash "$SKILL_DIR/scripts/synthesize.sh" -- "High-fidelity narration."
Default output path: results/gemini-tts-{epoch}.mp3.
Cost
Free tier: $0 within 1500 req/day quota. For our cadence (a few demos a day), stays free indefinitely. Paid (Flash): $0.50 / 1M input tokens + $10.00 / 1M output tokens.
Compared to OpenAI TTS (gpt-4o-mini-tts) at ~$0.02 per 60s: Gemini Flash is free-equivalent for typical demo workloads.
When to fall back to openai-tts
The make-viral-video skill auto-falls-back to OpenAI TTS when:
- Gemini API returns 4xx/5xx
- Gemini quota hit (429)
GEMINI_API_KEYmissingTTS_PROVIDER=OPENAIenv override set
If Invoked As A Slash Command
If ARGUMENTS is empty, ask the user for the text. Otherwise:
bash "$SKILL_DIR/scripts/synthesize.sh" -- "$ARGUMENTS"