Skip to main content

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

speak_cli-0.1.0.tar.gz (11.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

speak_cli-0.1.0-py3-none-any.whl (13.1 kB view details)

Uploaded Python 3

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

Hashes for speak_cli-0.1.0.tar.gz
Algorithm Hash digest
SHA256 3c7280746ae77811dc0d3a281c3fbcc6aef6d0109a2e8dec0a3c7a6497b22ebf
MD5 49f8b1a5feea785d3eb5c959a3b1fafe
BLAKE2b-256 d44436d7e4a19e6b86be2d0052377a362b94020c46bbb9f7e5c1d2b2133eb959

See more details on using hashes here.

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

Hashes for speak_cli-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 adfa69169a49f12aa798d859db031fd6b8c8dc5823fae53073a3ba106717b1ce
MD5 4d4bc6595e94d941a5b6920386bd4ca6
BLAKE2b-256 ce24d76b58c68e017147c848660d40209e54c312eccc893e5da0743ee9a88ff4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page