| name | local-tts |
| description | Generate speech locally from text using VoxCPM2 (2B params, Apache-2.0). 30 languages,
voice design (describe a voice), voice cloning (from 3-10s reference). Runs 100%
offline on Apple Silicon via Metal (MPS). Zero API calls, zero cost.
Use when user asks to "say" or "speak" something, wants a voiceover, wants to clone
a voice, or wants to generate audio from text. Trigger phrases: "say this",
"read out loud", "clone my voice", "generate voiceover", "text to speech", "TTS".
|
| allowed-tools | Read, Bash(python3:*), Bash(file:*), Bash(ls:*) |
| version | 1.3.0 |
| author | Bubble Invest <contact@bubbleinvest.com> |
| license | Apache-2.0 |
| tags | ["tts","voice","audio","voice-cloning","voice-design","offline","apple-silicon","narration"] |
| user-invocable | true |
| compatibility | Designed for Claude Code |
Local TTS — Offline Text-to-Speech
Generate speech from text using VoxCPM2 locally. 30 languages, voice design, voice cloning. Runs on Apple Silicon via Metal. Apache-2.0, zero cost.
Overview
This skill wraps VoxCPM2 (OpenBMB, Apache-2.0) for local text-to-speech. It supports three modes:
- Default voice — just feed text, get natural speech in 30 languages (auto-detected)
- Voice Design — describe the voice in a parenthetical prefix, get matching speech
- Voice Cloning — provide a 3-10s reference clip, the output mimics the voice
All processing happens on-device. No API keys. No network calls after the initial model download. Output is 48 kHz WAV ready for any use (Telegram voice messages, podcasts, video narration).
Prerequisites
- Python 3.10+ (3.12 recommended)
- macOS with Apple Silicon preferred (M1/M2/M3/M4). Linux with CUDA also works.
- ~10 GB disk space for model weights (downloaded once on first use)
- ~16 GB RAM recommended
The skill expects a Python venv at ~/.local-tts/venv with the voxcpm package installed. If missing, create it:
mkdir -p ~/.local-tts
python3.12 -m venv ~/.local-tts/venv
~/.local-tts/venv/bin/pip install --upgrade pip voxcpm
First generation downloads ~10 GB of model weights to ~/.cache/huggingface/. Subsequent runs load the cache in ~30s.
Instructions
Step 1 — Verify the environment
ls ~/.local-tts/venv/bin/python && echo "venv OK" || echo "Run setup first"
If the venv is missing, guide the user through the setup commands above.
Step 2 — Generate the speech
Use the generate.py script bundled in this plugin. The entry point:
VENV=~/.local-tts/venv
SCRIPT=${CLAUDE_PLUGIN_ROOT}/scripts/generate.py
OUT=/tmp/tts_$(date +%s).wav
Default voice (auto-detected language):
"$VENV/bin/python" "" --text --out