speak-tts — Claude Code skill: local TTS on Apple Silicon
A skill that gives your agent a voice: it reads text, articles and books aloud on your Mac, with no API keys and no cloud.
npx skills add EmZod/speak --skill speak-tts -a claude-codeWhat speak-tts does
speak-tts turns text into speech through MLX on Apple Silicon. Everything runs on-device, so there are no keys and no external service. The agent can take a file, a plain string, the clipboard or stdin.
Under the hood sits the speak utility with several modes: write a WAV for later, stream playback as it generates, play the finished file, or do both at once. Voice cloning works from a short recording, emotion tags like [sigh] and [laugh] produce real sounds, and batch mode handles whole chapter folders. Long inputs get auto-chunked and stitched back into one file per source.
Apple Silicon is a hard requirement here — Intel Macs are out. Install sox and ffmpeg first, plus poppler if you plan to feed it PDFs. A voice sample must be WAV, 24000 Hz, mono, between 10 and 30 seconds, and the path to it has to be absolute; a relative one fails.
What it helps with
- read an article or document aloud without sending text to a cloud service
- turn a PDF or a folder of chapters into an audiobook
- get spoken replies from the agent in the terminal
- clone your own voice from a short recording
- join several WAV files into one track in the right order
Example prompts for the agent
- read article.txt aloud and save it as a WAV
- narrate this text with speak-tts
- build an audiobook from chapters/*.txt with auto-chunking
How to install speak-tts
1Skills CLI (Vercel)
npx skills add EmZod/speak --skill speak-tts -a claude-code2Manually: put the files in place
~/.claude/skills/speak-tts/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/speak-tts/
1Skills CLI (Vercel)
npx skills add EmZod/speak --skill speak-tts -a codex2Manually: put the files in place
.agents/skills/speak-tts/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add EmZod/speak --skill speak-tts -a cursor2Manually: put the files in place
.cursor/skills/speak-tts/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install EmZod/speak speak-tts2Manually: put the files in place
.github/skills/speak-tts/SKILL.md1Skills CLI (Vercel)
npx skills add EmZod/speak --skill speak-tts -a gemini-cli2Platform CLI
gemini skills install https://github.com/EmZod/speakManually: put the files in place
.devin/skills/speak-tts/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add EmZod/speak --skill speak-tts -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about speak-tts
How do I install speak-tts in Claude?
Run npx skills add EmZod/speak --skill speak-tts -a claude-code. The skill lands in ~/.claude/skills/speak-tts/SKILL.md.
What does speak-tts do?
It synthesises speech locally on Apple Silicon: reads files, strings and clipboard contents, clones voices, and concatenates chapters into a single audio file.
What do I need for speak-tts to work?
An Apple Silicon Mac with macOS 12.0 or newer, plus sox and ffmpeg. For PDF input you also need poppler.