Text-to-speech CLI (speak): Groq first when it supports the language, then local Orpheus, then macOS say.
English: text → Groq Orpheus → local Orpheus → macOS say
Arabic: text → Groq Orpheus → macOS say
German: text → local Orpheus (DE) → macOS say
Other: text → macOS say
Forced --engine groq|local|say never falls back.
uv tool install git+https://github.com/thaikolja/speaker-cli.git
mkdir -p ~/.config/speak
speak --write-config ~/.config/speak/config.json
# set groq_api_key (or export GROQ_API_KEY)
speak "Hello from Groq."
speak "Guten Tag."
speak -d cheerful "Great news!"
speak -f notes.txt --speed 1.25
speak --engine say "Offline only"
speak --help| Doc | Contents |
|---|---|
| docs/architecture.md | Modules, chain, data flow |
| docs/configuration.md | config.json, env, settings |
| docs/backends.md | Groq / local / say |
| docs/cli-reference.md | Flags, exit codes, examples |
| docs/development.md | Setup, tests, gates |
| docs/troubleshooting.md | Common failures |
JSON only (not .env for defaults). Search order: --config → $SPEAK_CONFIG → ./config.json → ~/.config/speak/config.json.
Optional env: GROQ_API_KEY, SPEAK_CONFIG. See .env.example and config.example.json.
| Path | Language | Model/Asset | Default Voice |
|---|---|---|---|
| Groq | English | canopylabs/orpheus-v1-english |
troy (max 200 chars) |
| Groq | Arabic | canopylabs/orpheus-arabic-saudi |
fahad |
| Local | English | GGUF EN | leo |
| Local | German | GGUF DE | leo |
| say | system | macOS voices | auto |
git clone https://github.com/thaikolja/speaker-cli.git
cd speaker-cli
uv sync --extra dev
make install-metal # Apple Silicon Metal llama-cpp-python
speak --engine local "Hello offline."uv sync --extra dev
make checkSee docs/development.md.