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.