speak-tts
Give your agent the ability to speak to you real-time. Talk to your Claude! Local TTS, text-to-speech, voice synthesis, audio generation with voice cloning on Apple Silicon. Use for reading articles aloud, audiobook narration, or voice responses. Runs entirely on-device via MLX - private, no API key
By emzod · 734 installs
npx skills add emzod/speak --skill speak-tts
Source repository · Upstream listing
speak Talk to your Claude!
Give your agent the ability to speak to you real time. Local text to speech, voice cloning, and audio generation on Apple Silicon.
Give your agent the ability to speak to you real time. Local TTS with voice cloning on Apple Silicon.
Prerequisites
Requirement Check Install
Apple Silicon Mac uname m → arm64 Intel not supported
macOS 12.0+ sw vers
sox which sox brew install sox
ffmpeg which ffmpeg brew install ffmpeg
poppler (PDF) which pdftotext brew install poppler
Input Sources
Source Example
Text file speak article.txt
Markdown speak doc.md
Direct string speak "Hello"
Clipboard pbpaste \ speak
Stdin cat file.txt \ speak
Web Articles
Converting Formats
Format Convert Command
PDF pdftotext doc.pdf doc.txt
DOCX textutil convert txt doc.docx
HTML pandoc f html t plain doc.html doc.txt
Output Modes
Goal Command
Save for later speak text.txt output file.wav
Listen now (streaming) speak text.txt stream
Listen now (complete) speak text.txt play
Both speak text.txt stream output file.wav
Default Behavior
Directory Auto Creation
Directory Auto Created?
~/Audio/speak/ ✓ Yes
~/.chatter/voices/ ✗ No
Custom directories ✗ No
Always create custom directories first:
Voice Cloning
Voice cloning generates speech that matches your vocal characteristics (pitch, tone, cadence) from a short recording.
Quality Expectations
Output captures general voice characteristics but is not a perfect replica
Quality depends heavily on sample quality
15 25 seconds is optimal (10s minimum, 30s maximum)
Recording Your Voice
Using QuickTime:
1. Open QuickTime Player → File → New Audio Recording
2. Record 20 seconds of clear speech
3. File → Export As → Audio Only (.m4a)
4. Convert to WAV (see below)
Using sox (command line):
Converting to Required Format
Voice samples MUST be: WAV, 24000 Hz, mono, 10 30 seconds.
Using Your Voice
Path requirements:
✓ Works: ~/.chatter/voices/my voice.wav (tilde expanded by shell)
✓ Works: /Users/name/.chatter/voices/my voice.wav
✗ Fails: my voice.wav (relative path)
✗ Fails: ./voices/my voice.wav (relative path)
Voice Sample Tips
Good Sample Bad Sample
Quiet room Background noise
Natural pace Rushed or monotone
Clear diction Mumbling
Varied content Repetitive phrases
Default Voice
When voice is omitted, a built in default voice is used:
Emotion Tags
Tags produce audible effects (actual sounds), not spoken words:
Tag Effect
[laugh] Laughter
[chuckle] Light chuckle
[sigh] Sighing
[gasp] Gasping
[groan] Groaning
[clear throat] Throat clearing
[cough] Coughing
[crying] Crying
[singing] Sung speech
NOT supported: [pause] , [whisper] (ignored)
For pauses: Use punctuation: "Wait... let me think."
Batch Processing
Auto Chunk Behavior
When using auto chunk with batch processing:
1. Each input file is chunked independently
2. Chunks are generated and automatically concatenated per file
3. Final output: one .wav per input file (e.g., ch01.wav )
4. Intermediate chunks deleted (unless keep chunks )
You don't need to manually concatenate chunks — only concatenate final chapter files.
Concatenating Audio
Zero Padding Rules
Critical for correct concatenation order:
Files Correct Wrong
1 9 01 , 02 , ..., 09 1 , 2 , ..., 9
10 99 01 , 02 , ..., 99 1 , 10 , 2 , ...
100+ 001 , 002 , ..., 999 1 , 100 , 2 , ...
Why: Shell glob expansion sorts alphabetically. 1, 10, 2 vs 01, 02, 10 .
PDF to Audiobook (Complete Workflow)
Step 1: Find Chapter Boundaries
Step 2: Extract Chapters (Zero Padded!)
Step 3: Estimate Time
Step 4: Generate Audio
Step 5: Concatenate
PDF Troubleshooting
Issue Solution
Empty/garbled text Scanned PDF — use OCR: brew install tesseract
Wrong encoding Try: pdftotext enc UTF 8 doc.pdf
Check word count pdftotext doc.pdf \ wc w (should be 100)
Multi Voice Content
Options Reference
Option Description Default
stream Stream as it generates false
play Play after complete false
output <path Output file ~/Audio/speak/
output dir <dir Batch output directory
voice <path Voice sample (full path) default
timeout <sec Timeout per file 300
auto chunk Split long documents false
chunk size <n Chars per chunk 6000
resume <file Resume from manifest
keep chunks Keep intermediate files false
skip existing Skip if output exists false
estimate Show duration estimate false
dry run Preview only false
quiet Suppress output false
Commands
Command Description
speak setup Set up environment
speak health Check system status
speak models List TTS models
speak concat Concatenate audio
speak daemon kill Stop TTS server
speak config Show configuration
Performance
Metric Value
Cold start ~4 8s
Warm start ~3 8s
Speed 0.3 0.5x RTF (faster than real time)
Storage ~2.5 MB/min, ~150 MB/hour
Resume Capability
For interrupted long generations:
Common Errors
Error Cause Solution
"Voice file not found" Relative path Use full path: ~/.chatter/voices/x.wav
"Invalid WAV format" Wrong specs Convert: ffmpeg i in.wav ar 24000 ac 1 out.wav
"Voice sample too short" <10 seconds Record 15 25 seconds
"Output directory doesn't exist" Not created mkdir p dirname/
"sox not found" Not installed brew install sox
Scrambled concat order Non zero padded Use 01 , 02 , not 1 , 2
Timeout 5 min generation Use auto chunk or timeout 600
"Server not running" Stale daemon speak daemon kill && speak health
Setup
Server Management
Server auto starts and shuts down after 1 hour idle.