Generate high-quality audio from text using Eleven Labs API. Use for podcasts, narration, voice-overs, and audio summaries.
View on GitHubkrishagel/geoffrey
geoffrey
January 24, 2026
Select agents to install to:
npx add-skill https://github.com/krishagel/geoffrey/blob/main/skills/elevenlabs-tts/SKILL.md -a claude-code --skill elevenlabs-ttsInstallation paths:
.claude/skills/elevenlabs-tts/# 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 ```bash # 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:** | Argument | Description | Default | |----------|-------------|---------| | `--text` | Text content to convert | - | | `--file` | Path to text file | - | | `--voice` | Voice name or ID | Rachel | | `--model` | Model ID | eleven_multilingual_v2 | | `--output` | Output 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:** | Argument | Description | Default | |----------|-------------|---------| | `--all` | Show all voices (not just premade) | false | | `--json` | Output as JSON | false | ## Curated Voices Six voices selected for variety (see `references/voices.md` for details): | Voice | Style | Best For | |-------|-------|----------| | **Rachel** | Calm, clear | Narration, podcasts (default) | | **Bella** | Soft, gentle | Storytelling, meditation | | **Elli** | Young, expressive | Casual content, tutorials | | **Josh** | Deep, authoritative | News, professional content | | **Adam** | Middle-aged, clear | Business, documentaries | | **Antoni** | Warm, versatile | General purpose | Use `list_voices.py` to discover additional voices. ## Models | Model | ID | Best For | Char Limit | |-------