speak — local text-to-speech CLI
Speak text out loud from the command line using Supertonic 3 — a fast, ~99M-parameter TTS model that runs entirely on your CPU. No cloud, no API keys.
speak "hello world"
echo "piped text works too" | speak
speak -v noah "a different voice"
speak "مرحبا بالعالم" # language auto-detected from the text
speak -o clip.wav "save to a file instead"
Install
uv tool install speak-cli
Or without waiting for a PyPI release, straight from GitHub:
uv tool install git+https://github.com/MohamedAliRashad/tts-cli
(From a clone, uv tool install . works too.) All dependencies are prebuilt Python wheels — no compilers, no apt packages. On the first speak, the Supertonic 3 models (~400 MB) are downloaded once to ~/.cache/supertonic3/; everything after that works fully offline. say is installed as an alias of speak (handy, but if another tool on your machine already provides say, just use speak).
How it stays fast
The first call starts a background daemon that keeps the models loaded in memory, so subsequent calls speak in well under a second. The daemon exits after 15 minutes idle (tune with SPEAK_IDLE_TIMEOUT seconds) and is respawned transparently. If the daemon can't run for any reason, speak silently falls back to in-process synthesis — it always works.
speak --stop # stop the daemon manually
speak --no-daemon # bypass the daemon for one call
Voices
speak --list-voices
| Female | Male |
|---|---|
| sara (default) | james |
| emma | daniel |
| lily | leo |
| maya | ryan |
| nora | noah |
--voice accepts any of these names, case-insensitive. Set a persistent default with export SPEAK_VOICE=noah.
Options
| Flag | Default | Meaning |
|---|---|---|
-v, --voice |
sara | voice name |
-s, --speed |
1.05 | speech speed (0.7–2.0) |
-l, --lang |
auto | language code, auto, or na (language-agnostic) |
--steps |
8 | quality/speed trade-off (5–12) |
-o, --out FILE |
— | write WAV instead of playing (--play for both) |
--verbose |
— | show detected language, timing, synthesis path |
Language auto-detection is script-based: Arabic, Japanese, Korean, Russian, Greek, and Hindi are detected from their alphabets; all Latin-script text is assumed English (use --lang fr, --lang de, … to override). Supported languages: en ko ja ar bg cs da de el es et fi fr hi hr hu id it lt lv nl pl pt ro ru sk sl sv tr uk vi.
Expression tags can be embedded in the text: speak "well <laugh> that was funny" (also <breath>, <sigh>, …).
Playback
Audio is played through the first working system player among paplay, pw-play, aplay, afplay (macOS), ffplay, play (sox) — every mainstream desktop has at least one. If none works, speak tells you and suggests --out.
Licenses
CLI code: MIT. Supertonic 3 model weights: OpenRAIL-M (via the supertonic SDK's auto-download).
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file speak_cli-0.1.0.tar.gz.
File metadata
- Download URL: speak_cli-0.1.0.tar.gz
- Upload date:
- Size: 11.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3c7280746ae77811dc0d3a281c3fbcc6aef6d0109a2e8dec0a3c7a6497b22ebf
|
|
| MD5 |
49f8b1a5feea785d3eb5c959a3b1fafe
|
|
| BLAKE2b-256 |
d44436d7e4a19e6b86be2d0052377a362b94020c46bbb9f7e5c1d2b2133eb959
|
File details
Details for the file speak_cli-0.1.0-py3-none-any.whl.
File metadata
- Download URL: speak_cli-0.1.0-py3-none-any.whl
- Upload date:
- Size: 13.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
adfa69169a49f12aa798d859db031fd6b8c8dc5823fae53073a3ba106717b1ce
|
|
| MD5 |
4d4bc6595e94d941a5b6920386bd4ca6
|
|
| BLAKE2b-256 |
ce24d76b58c68e017147c848660d40209e54c312eccc893e5da0743ee9a88ff4
|