Make your computer talk, right from the terminal. Powered by Supertonic 3 — everything runs locally on your CPU.
# If you don't have uv installed, run this first:
curl -LsSf https://astral.sh/uv/install.sh | sh # Linux / macOS
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" # Windows
# if you do just run this command
uv tool install speak-cliThe voice models (~400 MB) download automatically the first time you speak. Works on Linux, macOS, and Windows.
speak "hello world"
speak -v noah "a different voice"
speak "مرحبا بالعالم" # language detected automatically
speak -o clip.wav "or save to a file"
speak < article.txt # long reads start speaking instantly
ollama run llama3 "tell a story" | speak --live # voice for your LLMNote: say also works as an alias.
The same engine is available as a library — add speak-cli to your project (uv add speak-cli / pip install speak-cli) and:
from speak_cli import Speaker, say
say("hello world") # one-liner: synthesize and play
speaker = Speaker(voice="noah", speed=1.1) # model loads once, reuse it
speaker.say("long texts stream, so they start speaking instantly")
wav_bytes = speaker.synthesize("raw 44.1 kHz WAV bytes")
speaker.save("مرحبا بالعالم", "clip.wav") # language auto-detected per callPer-call overrides work everywhere: speaker.say("bonjour", lang="fr", speed=0.9).
Ten voices, picked by name (speak --list-voices):
| Female | Male |
|---|---|
| sara (default) | james |
| emma | daniel |
| lily | leo |
| maya | ryan |
| nora | noah |
Prefer one? Make it stick: speak --set-default noah
| Flag | Default | Meaning |
|---|---|---|
-v, --voice |
sara | voice name |
-s, --speed |
1 | speech speed (0.7–2.0) |
-l, --lang |
auto | language (31 supported, auto-detected from the text) |
-o, --out FILE |
— | save a WAV instead of playing |
--live |
— | speak piped input line by line as it arrives |
--steps |
8 | quality vs speed (5–12) |
Sprinkle in expression tags for natural delivery: speak "well <laugh> that was funny" (also <breath>, <sigh>, …).
- Speech streams: long texts start playing in about a second while the rest is still being synthesized — no waiting, no length limit.
- The first call starts a small background service that keeps the model warm — repeat calls speak in under a second. It shuts itself down after 15 idle minutes;
speak --stopends it manually. - Auto-detection recognizes Arabic, Japanese, Korean, Russian, Greek, and Hindi by their alphabets; other Latin-script languages need a hint, e.g.
--lang fr.
CLI: MIT · Supertonic 3 model weights: OpenRAIL-M
