Skip to main content
skill CX Codex

google-tts — Claude Code skill: narrate text and documents

Turns text, PDF, DOCX and Markdown into audio through Google Cloud Text-to-Speech. Useful when you would rather listen to a document than read it.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add sanjay3290/ai-skills --skill google-tts -a claude-code
Open on GitHub

What google-tts does

The skill calls the Google Cloud TTS API and writes an audio file: MP3, LINEAR16 (.wav) or OGG_OPUS (.ogg). Voices come from Neural2, WaveNet, Studio and Standard, across more than 40 languages. A separate podcast mode takes a JSON script with alternating speakers and gives each one its own voice.

You need an API key before the first run — either in the GOOGLE_TTS_API_KEY environment variable or in skills/google-tts/config.json as {"api_key": "..."}. Multi-chunk documents require ffmpeg, and PDF or DOCX input needs pip install PyPDF2 python-docx. No key, no audio, so check that first.

The API caps a request at 5000 bytes. The script chunks long text on its own at sentence boundaries, so big files go through fine. Default voices are en-US-Neural2-D and en-US-Neural2-F; speaking rate runs from 0.25 to 4.0, and the author suggests starting around 0.85–0.95 for technical material.

What it helps with

  • narrate a PDF into an MP3 file
  • produce an audio version of a report
  • build a two-host podcast from a document
  • pick a voice and language for a given accent
  • export a long Markdown file as one audio track

Example prompts for the agent

  • narrate this PDF and save it to ~/Downloads/narration.mp3
  • create a podcast from /tmp/script.json with two voices
  • read doc.md aloud using the en-US-Neural2-F voice

How to install google-tts

1Skills CLI (Vercel)

npx skills add sanjay3290/ai-skills --skill google-tts -a claude-code

2Manually: put the files in place

~/.claude/skills/google-tts/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/google-tts/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about google-tts

How do I install google-tts in Claude?

Run npx skills add sanjay3290/ai-skills --skill google-tts -a claude-code. The skill then lands at ~/.claude/skills/google-tts/SKILL.md.

What does google-tts do?

It converts text and documents to audio using Google Cloud Text-to-Speech. It handles single-voice narration and a podcast mode with two speakers.

What does the skill need to run?

An API key in GOOGLE_TTS_API_KEY or in skills/google-tts/config.json. Multi-chunk documents need ffmpeg, and PDF or DOCX input needs pip install PyPDF2 python-docx.

Source text

SKILL.md · Apache-2.0
---
name: google-tts
description: |
  Convert documents and text to audio using Google Cloud Text-to-Speech.
  Use this skill when the user wants to: narrate a document, read aloud text,
  generate audio from a file, convert text to speech, create a recording
  of documentation or analysis, create a podcast from a document, or use
  Google TTS/text-to-speech. Trigger phrases: "read this aloud", "narrate this",
  "create a recording", "text to speech", "TTS", "convert to audio",
  "audio from document", "listen to this", "generate audio", "google tts",
  "create a podcast".
---

# Google Cloud Text-to-Speech

Converts text and documents into audio using Google Cloud TTS API. Supports Neural2, WaveNet, Studio, and Standard voices across 40+ languages.

## Setup

API key via `GOOGLE_TTS_API_KEY` env var or `skills/google-tts/config.json` with `{"api_key": "..."}`.
Requires `ffmpeg` for multi-chunk documents. Optional: `pip install PyPDF2 python-docx` for PDF/DOCX.

## Commands

### List Voices

```bash
python skills/google-tts/scripts/google_tts.py voices --language en-US --type Neural2
python skills/google-tts/scripts/google_tts.py voices --json
```

### Text-to-Speech

```bash
# From text or document (PDF, DOCX, MD, TXT)
python skills/google-tts/scripts/google_tts.py tts --text "Hello world" --output ~/Downloads/hello.mp3
python skills/google-tts/scripts/google_tts.py tts --file /path/to/doc.pdf --output ~/Downloads/narration.mp3

# With voice, rate, pitch, encoding options
python skills/google-tts/scripts/google_tts.py tts --file doc.md --voice en-US-Neural2-F --rate 0.9 --encoding MP3 --output ~/Downloads/out.mp3
```

### Podcast Generation

Takes a JSON script with alternating speakers, synthesizes each with a different voice.

```json
[
  {"speaker": "host1", "text": "Welcome to our podcast!"},
  {"speaker": "host2", "text": "Thanks for having me..."}
]
```

```bash
python skills/google-tts/scripts/google_tts.py podcast --script /tmp/script.json --output ~/Downloads/podcast.mp3
python skills/google-tts/scripts/google_tts.py podcast --script /tmp/script.json --voice1 en-US-Neural2-J --voice2 en-US-Neural2-H --rate 0.9 --output ~/Downloads/podcast.mp3
```

## Workflow

### Single-Voice Narration

1. If user provides a file path, use `--file`. For generated content, write clean prose to `/tmp/tts_input.md` first.
2. Default voice: `en-US-Neural2-D` (male) or `en-US-Neural2-F` (female). Use Neural2 for best quality/cost balance.
3. Generate: `python skills/google-tts/scripts/google_tts.py tts --file /tmp/tts_input.md --output ~/Downloads/recording.mp3`
4. Report file location and size. Default output to `~/Downloads/`.

### Podcast from Document

1. Extract text: `python skills/google-tts/scripts/extract.py /path/to/document.pdf`
2. Generate a two-host conversation script as JSON:
   - Natural discussion, not verbatim reading. Host 1 leads, Host 2 reacts/analyzes.
   - Include intro and outro. Vary turn lengths. Keep turns under 4000 chars.
3. Write script to `/tmp/podcast_script.json`
4. Generate: `python skills/google-tts/scripts/google_tts.py podcast --script /tmp/podcast_script.json --output ~/Downloads/podcast.mp3`
5. Clean up temp files.

## Reference

- **Recommended voice type**: Neural2 (~$4/1M chars, high quality)
- **Speaking rate**: 0.25-4.0 (0.85-0.95 good for technical content)
- **Pitch**: -20.0 to 20.0 semitones
- **Encodings**: MP3 (default), LINEAR16 (.wav), OGG_OPUS (.ogg)
- API limit: 5000 bytes/request. Script auto-chunks at sentence boundaries.

© sanjay3290 · Apache-2.0 · sanjay3290/ai-skills

Similar skills

All skills for Agent setup: memory, context, orchestration →

From the same set15

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor