-
Notifications
You must be signed in to change notification settings - Fork 0
TTS and Voices
Jarvis Line can use Kokoro, platform system speech, macOS say, or a custom
command/API wrapper. Choose the backend that supports the language you ask the
agent to write.
| Backend | Best fit | Important limit |
|---|---|---|
| Kokoro | Recommended local English voice | Bundled defaults are English-focused; model files are separate |
| System TTS | Lowest-friction fallback and OS-managed languages | Voice quality and availability depend on the operating system |
macOS say
|
Explicit macOS voice and rate selection | Some newer Read & Speak voices may not appear in say -v '?'
|
| Custom command | Edge TTS, OpenAI TTS, ElevenLabs, local models, or your API wrapper | You own provider credentials, privacy, and output compatibility |
Inspect the active backend and supported settings:
jarvis-line config get tts
jarvis-line tts capabilitiesJarvis Line's default Kokoro profile is lang=en-gb with an English voice mix.
It does not automatically switch model, voices, phonemizer, or language when
you generate an instruction in another language.
jarvis-line kokoro status
jarvis-line kokoro download --accept-license
jarvis-line kokoro verify
jarvis-line kokoro install-deps
jarvis-line tts use kokoroThe model download is explicit because the files are large and have their own upstream Apache-2.0 license. Downloads use pinned upstream metadata and are verified by size and SHA-256 before replacement.
Default model locations:
~/.jarvis-line/tts/kokoro-models/kokoro-v1.0.onnx
~/.jarvis-line/tts/kokoro-models/voices-v1.0.bin
Configure trusted custom files:
jarvis-line kokoro configure \
--model-path ~/.jarvis-line/tts/kokoro-models/kokoro-v1.0.onnx \
--voices-path ~/.jarvis-line/tts/kokoro-models/voices-v1.0.binKokoro supports voice, lang, speed, volume, model paths, and playback
mode. Temporary-file playback is the reliability default and deletes generated
audio after playback. Advanced users can choose streaming for lower latency.
For non-English Kokoro, you must provide a mutually compatible model, voices, language setting, and phonemizer support. Jarvis Line does not claim that an arbitrary Kokoro model supports an arbitrary language.
jarvis-line tts use systemPlatform implementation:
- macOS: system speech through
say - Windows: PowerShell
System.Speech.Synthesis.SpeechSynthesizer - Linux:
spd-say,espeak-ng, orespeak
For the best macOS fallback, let the OS choose its configured voice:
jarvis-line config set system_voice null
jarvis-line config set system_rate null
jarvis-line tts use systemWhen system_voice is null, Jarvis Line follows the default speech language
and voice selected by macOS.
- Open System Settings.
- Go to Accessibility.
- Open Read & Speak.
- Choose System speech language.
- Choose a natural System voice for that language.
- Keep Jarvis Line on system TTS with no explicit voice override.
- Generate and paste Jarvis Line instructions in the same language.
Example for Turkish:
jarvis-line tts use system
jarvis-line config set system_voice null
jarvis-line config set system_rate null
jarvis-line instructions print agents --language "Turkish"Your macOS interface language can remain English. Read & Speak language, voice, and Jarvis Line instruction language are separate choices and should match one another for natural pronunciation. Prefer downloaded Siri or premium voices when available; an English voice reading Turkish text is expected to sound robotic or mispronounced.
Use this preset only when you specifically want explicit say voice/rate
controls:
jarvis-line tts use macosSupported settings are macos_voice and macos_rate.
Direct-speech command:
jarvis-line tts use command --command 'my-tts --text {text_json}'File-producing command:
jarvis-line tts use command \
--mode file \
--command 'my-tts --text {text_json} --output {output}' \
--player 'ffplay -nodisp -autoexit -loglevel quiet {output}'Placeholders:
-
{text}: raw text -
{text_json}: JSON-escaped text -
{output}: generated file path in file mode
Advanced custom fields must begin with custom_ or backend_:
jarvis-line config set custom_voice_id abc123
jarvis-line config set backend_region euKeep API keys in environment variables or your credential store, not in the Jarvis Line config, spoken line, logs, or issue report. A network-backed wrapper sends text according to that provider's behavior and privacy policy.
For exact backend fields and public-library notices, see the versioned TTS reference and third-party notices.
Repository · Releases · Issues · Discussions