Make your computer talk, right from the terminal. Powered by Supertonic 3 — everything runs locally on your CPU.
Install
# 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-cli
The voice models (~400 MB) download automatically the first time you speak. Works on Linux, macOS, and Windows.
How to use ?
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 LLM
Note: say also works as an alias.
Use from Python
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 call
Per-call overrides work everywhere: speaker.say("bonjour", lang="fr", speed=0.9).
Voices
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
Options
| 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>, …).
Good to know
- 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.
Licenses
CLI: MIT · Supertonic 3 model weights: OpenRAIL-M
Metadata
Release files for speak-cli 1.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| speak_cli-1.3.0.tar.gz | 19.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| speak_cli-1.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 39.2 kB
Release files / speak_cli-1.3.0.tar.gz
| Download URL | speak_cli-1.3.0.tar.gz |
|---|---|
| Size | 19.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9ffb6a529eecb858b3c02a561e7ca9cb2f40c25b1bbbf272d4f1e24261c16d83
|
|
BLAKE2b-256 checksum How to use checksums |
1cd841d808211638343f08c2acf045eb9e3699721765dbf76c36289b622e0044
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.2 {"installer":{"name":"uv","version":"0.12.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / speak_cli-1.3.0-py3-none-any.whl
| Download URL | speak_cli-1.3.0-py3-none-any.whl |
|---|---|
| Size | 20.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f1dba01234eded39af71e196c9cacd08e67986a985801b2c0ce177cb8fb4fe60
|
|
BLAKE2b-256 checksum How to use checksums |
731a05d0fe5040bdd14308e81254a607253b625f4cc74eea382beb65e5a64c5e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.2 {"installer":{"name":"uv","version":"0.12.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|