A CLI wrapper for KittenTTS — lightweight ONNX-based text-to-speech on CPU, with model management and optional audio playback.
Note: Linux only. Requires Python ≥ 3.8,
uv, andgit.
git clone https://github.com/newptcai/purr
cd purr
bash install.sh # or: uv tool install .install.sh installs purr as a uv tool, so it is
available on your PATH immediately — no virtual environment activation needed. Re-run it after
git pull to update.
The install is lean (about 180 MB, no torch or CUDA). purr pins kittentts to an upstream
commit that dropped the misaki → spaCy → torch dependency chain; the latest tagged KittenTTS
release (0.8.1) still pulls several GB of NVIDIA packages. Because the dependency is fetched from
GitHub, git must be on your PATH.
📖 Check out repy — a terminal epub reader that uses purr as its default TTS engine.
# List available models
purr model list
# Download the nano model (~50 MB)
purr model install nano
# Synthesize speech to a file
purr speak "Hello, world." --output hello.wav
# Play audio immediately (saves to /tmp/purr-<timestamp>.wav)
purr speak "Hello, world." --play
# Pipe text from stdin
echo "Testing stdin input" | purr speak --play --voice Luna
# Write WAV to stdout for piping into other tools
purr speak "Hello, world." --stdout > hello.wav
purr speak "Hello, world." --stdout | aplay -
# List voices for the active model
purr voices
# Show the installed version
purr --version| Command | Description |
|---|---|
purr model list |
Show all models with installation status |
purr model install <alias> |
Download and install a model |
purr model remove <alias> |
Remove an installed model |
Available model aliases: mini, micro, nano, nano-int8
purr speak [TEXT] [OPTIONS]
| Option | Short | Default | Description |
|---|---|---|---|
--model |
-m |
best installed | Model alias |
--voice |
-V |
Jasper |
Voice name |
--speed |
-s |
1.0 |
Speed multiplier |
--output |
-o |
/tmp/purr-<ts>.wav |
Output .wav file |
--play / --no-play |
-p |
off | Play audio after synthesis |
--stdout |
off | Write WAV audio to stdout (for piping) | |
--clean / --no-clean |
on | Text preprocessing | |
--quiet |
-q |
off | Suppress informational output |
If TEXT is omitted, input is read from stdin.
purr voices [--model nano]
Lists available voices for the specified model.
Models are stored in ~/.cache/kitten-cli/models/ by default.
Respects $XDG_CACHE_HOME if set.
Apache License 2.0, matching KittenTTS.
purr is the default TTS tool in repy, a terminal epub reader written in Rust.