On-demand text-to-speech for Claude Code on macOS — fast, free, offline-capable.
A Claude Code plugin that adds the speak skill. When you ask Claude to
read something aloud, it pipes the target text through a markdown-aware
normalizer and macOS's built-in say command, defaulting to the
Ava (Premium) neural voice at 250 wpm with a 1000-character cap.
The skill is pull-not-push — speech happens only when you explicitly ask. There is no Stop-hook narration and no fatigue.
/plugin marketplace add parasxos/claude-plugins
/plugin install speak@parasxos/claude-plugins
After install, restart Claude Code (or run /reload-skills).
Type any of these in chat — Claude routes them automatically:
/speakor/read— slash forms- "read your last answer aloud"
- "read that back"
- "say it back"
- "read this aloud: " — speak arbitrary quoted text
Per-call overrides via env vars in front of the trigger:
| Variable | Default | Meaning |
|---|---|---|
SPEAK_VOICE |
Ava (Premium) |
macOS voice name (any from say -v '?') |
SPEAK_RATE |
250 |
Words per minute (140 slow → 280 fast) |
SPEAK_MAX_CHARS |
1000 |
Hard cap on speech length (chars) |
Example: SPEAK_VOICE=Daniel SPEAK_RATE=180 /speak.
touch ~/.claude/.speak-mute # mute globally
rm ~/.claude/.speak-mute # unmutemacOS premium neural voices are downloadable for free:
- VoiceOver Utility → View menu → Speech → Voices tab → Add voice button → pick language → check the (Premium) or (Enhanced) variant.
- Premium variants sound genuinely human and iterate with macOS updates.
To verify a downloaded voice is actually wired to say (not silently
substituted):
say -v "Ava (Premium)" -o /tmp/a.aiff "test"
say -v "Samantha" -o /tmp/s.aiff "test"
md5 -q /tmp/a.aiff /tmp/s.aiff # different hash = real voice; same = silent fallback- macOS only. Uses
say(BSD/macOS) andafplay(macOS). - On Linux or remote SSH sessions, the script exits cleanly with a one-line notice — it does not crash the skill.
MIT. See LICENSE.
Paris Moschovakos — github.com/parasxos.
Part of parasxos/claude-plugins
marketplace.