Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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", "googl
.claude/skills/sanjay3290-google-tts/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | -49% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 38% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 12% | 0% |
| case-09 | ✗→✓ | ▲ Improved | -17% | 0% |
| case-11 | ✗→✓ | ▲ Improved | -19% | 0% |
Converts text and documents into audio using Google Cloud TTS API. Supports Neural2, WaveNet, Studio, and Standard voices across 40+ languages.
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.
bashpython skills/google-tts/scripts/google_tts.py voices --language en-US --type Neural2 python skills/google-tts/scripts/google_tts.py voices --json
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
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..."} ]
bashpython 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
--file. For generated content, write clean prose to /tmp/tts_input.md first.en-US-Neural2-D (male) or en-US-Neural2-F (female). Use Neural2 for best quality/cost balance.python skills/google-tts/scripts/google_tts.py tts --file /tmp/tts_input.md --output ~/Downloads/recording.mp3~/Downloads/.python skills/google-tts/scripts/extract.py /path/to/document.pdf/tmp/podcast_script.jsonpython skills/google-tts/scripts/google_tts.py podcast --script /tmp/podcast_script.json --output ~/Downloads/podcast.mp3| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 6,311 | 10,317 | +63% | 1 | 1 | 0% | 324 | 1,253 | +287% | 0 | 0 | — |
case-02 | fail→pass | 21,204 | 7,553 | -64% | 1 | 1 | 0% | 3,436 | 1,769 | -49% | 0 | 0 | — |
case-03 | fail→fail | 9,849 | 2,042 | -79% | 1 | 1 | 0% | 1,967 | 1,260 | -36% | 0 | 0 | — |
case-04 | pass→pass | 3,192 | 2,532 | -21% | 1 | 1 | 0% | 570 | 1,415 | +148% | 0 | 0 | — |
case-05 | pass→pass | 3,304 | 2,777 | -16% | 1 | 1 | 0% | 651 | 1,440 | +121% | 0 | 0 | — |
case-06 | pass→pass | 2,396 | 2,649 | +11% | 1 | 1 | 0% | 394 | 1,313 | +233% | 0 | 0 | — |
case-07 | fail→pass | 4,347 | 2,021 | -54% | 1 | 1 | 0% | 899 | 1,245 | +38% | 0 | 0 | — |
case-08 | fail→pass | 5,170 | 1,931 | -63% | 1 | 1 | 0% | 1,055 | 1,183 | +12% | 0 | 0 | — |
case-09 | fail→pass | 9,698 | 2,593 | -73% | 1 | 1 | 0% | 1,769 | 1,461 | -17% | 0 | 0 | — |
case-10 | pass→pass | 9,973 | 2,743 | -72% | 1 | 1 | 0% | 1,846 | 1,440 | -22% | 0 | 0 | — |
case-23 | pass→pass | 7,665 | 1,255 | -84% | 1 | 1 | 0% | 1,497 | 1,066 | -29% | 0 | 0 | — |
case-11 | fail→pass | 8,902 | 2,486 | -72% | 1 | 1 | 0% | 1,644 | 1,330 | -19% | 0 | 0 | — |
case-12 | pass→pass | 10,105 | 3,173 | -69% | 1 | 1 | 0% | 1,834 | 1,465 | -20% | 0 | 0 | — |
case-13 | fail→pass | 20,498 | 2,734 | -87% | 1 | 1 | 0% | 3,874 | 1,451 | -63% | 0 | 0 | — |
case-14 | fail→pass | 10,040 | 1,584 | -84% | 1 | 1 | 0% | 1,889 | 1,156 | -39% | 0 | 0 | — |
case-15 | fail→pass | 2,248 | 1,193 | -47% | 1 | 1 | 0% | 389 | 1,054 | +171% | 0 | 0 | — |
case-16 | pass→pass | 6,712 | 1,463 | -78% | 1 | 1 | 0% | 1,104 | 1,097 | -1% | 0 | 0 | — |
case-17 | fail→fail | 11,236 | 2,491 | -78% | 1 | 1 | 0% | 2,035 | 1,339 | -34% | 0 | 0 | — |
case-18 | fail→pass | 7,306 | 2,424 | -67% | 1 | 1 | 0% | 1,315 | 1,301 | -1% | 0 | 0 | — |
case-19 | pass→pass | 6,825 | 1,985 | -71% | 1 | 1 | 0% | 1,085 | 1,242 | +14% | 0 | 0 | — |
case-20 | fail→fail | 5,650 | 2,150 | -62% | 1 | 1 | 0% | 1,046 | 1,282 | +23% | 0 | 0 | — |
case-21 | fail→pass | 4,832 | 1,884 | -61% | 1 | 1 | 0% | 866 | 1,180 | +36% | 0 | 0 | — |
case-22 | fail→pass | 12,173 | 2,343 | -81% | 1 | 1 | 0% | 1,976 | 1,254 | -37% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 22 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +48 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.