Skill

elevenlabs-tts

Generate high-quality audio from text using Eleven Labs API. Use for podcasts, narration, voice-overs, and audio summaries.

From psd-productivity
Install
1
Run in your terminal
$
npx claudepluginhub psd401/psd-claude-plugins --plugin psd-productivity
Tool Access

This skill is limited to using the following tools:

ReadWriteBash
Supporting Assets
View in Repository
references/voices.md
scripts/__pycache__/generate_audio.cpython-313.pyc
scripts/__pycache__/list_voices.cpython-313.pyc
scripts/generate_audio.py
scripts/list_voices.py
Skill Content

Eleven Labs Text-to-Speech

Generate high-quality audio from text using the Eleven Labs API. Ideal for podcast-style summaries, narration, and voice-overs.

Quick Start

# Generate audio with default voice (Rachel)
uv run scripts/generate_audio.py --text "Hello, this is a test."

# Generate from a text file
uv run scripts/generate_audio.py --file report.txt --output ~/Desktop/report.mp3

# Use a specific voice
uv run scripts/generate_audio.py --text "Breaking news..." --voice Josh

# List available voices
uv run scripts/list_voices.py

Scripts

generate_audio.py

Main script for TTS generation.

Arguments:

ArgumentDescriptionDefault
--textText content to convert-
--filePath to text file-
--voiceVoice name or IDRachel
--modelModel IDeleven_multilingual_v2
--outputOutput file path~/Desktop/audio_TIMESTAMP.mp3

Features:

  • Auto-chunks text >10k characters at sentence boundaries
  • Concatenates chunks into single MP3
  • Returns JSON with metadata (file path, voice, model, char count, chunks)

list_voices.py

Fetch and display available voices.

Arguments:

ArgumentDescriptionDefault
--allShow all voices (not just premade)false
--jsonOutput as JSONfalse

Curated Voices

Six voices selected for variety (see references/voices.md for details):

VoiceStyleBest For
RachelCalm, clearNarration, podcasts (default)
BellaSoft, gentleStorytelling, meditation
ElliYoung, expressiveCasual content, tutorials
JoshDeep, authoritativeNews, professional content
AdamMiddle-aged, clearBusiness, documentaries
AntoniWarm, versatileGeneral purpose

Use list_voices.py to discover additional voices.

Models

ModelIDBest ForChar Limit
Multilingual v2eleven_multilingual_v2Long-form (default)10,000
Flash v2.5eleven_flash_v2_5Quick, real-time40,000
Turbo v2.5eleven_turbo_v2_5Balanced40,000
Eleven v3eleven_v3Maximum expression3,000

Environment Setup

Requires ELEVENLABS_API_KEY in:

~/Library/Mobile Documents/com~apple~CloudDocs/Geoffrey/secrets/.env

Examples

Daily Summary Podcast

# Generate individual segments
uv run scripts/generate_audio.py --file weather.txt --voice Rachel --output ~/Desktop/weather.mp3
uv run scripts/generate_audio.py --file news.txt --voice Josh --output ~/Desktop/news.mp3
uv run scripts/generate_audio.py --file calendar.txt --voice Bella --output ~/Desktop/calendar.mp3

Long Report

# Auto-chunks long text, concatenates into single file
uv run scripts/generate_audio.py --file quarterly_report.txt --model eleven_turbo_v2_5 --output report.mp3

Quick Test

uv run scripts/generate_audio.py --text "Testing one two three" --voice Adam

Output

Default: ~/Desktop/audio_YYYY-MM-DD_HHMMSS.mp3

Script returns JSON:

{
  "success": true,
  "file": "/Users/user/Desktop/audio_2026-01-23_143022.mp3",
  "voice": "Rachel",
  "model": "eleven_multilingual_v2",
  "characters": 1234,
  "chunks": 1
}

Limitations

  • Character limits vary by model (see table above)
  • One voice per generation (multi-voice requires separate files)
  • Output format: MP3 only
Stats
Parent Repo Stars0
Parent Repo Forks2
Last CommitMar 13, 2026