Supertonic
Run Supertonic locally and connect it to OpenReader using the Custom OpenAI-Like provider. Supertonic is a fast, on-device TTS engine that ships its own OpenAI-compatible HTTP server.
Supertonic does not publish a Docker image — it installs as a Python package and runs as a local HTTP server. These instructions assume OpenReader itself runs in Docker (the common case); see Running OpenReader directly on the host if you don't.
Run Supertonic
Install with pip (or pipx for an isolated install) and start the server:
pipx install 'supertonic[serve]' # or: pip install 'supertonic[serve]'
supertonic serve # defaults; loopback only
The first run downloads the model (~400MB). Once it's up, the OpenAI-compatible endpoint is at http://127.0.0.1:7788/v1/audio/speech and interactive docs are at http://127.0.0.1:7788/docs.
- Models:
supertonic-3(default) orsupertonic-2. - Voices: built-ins
M1–M5andF1–F5, plus any custom voices you import. OpenReader discovers them automatically via the/v1/stylesendpoint. - Audio format: Supertonic emits
wavby default; OpenReader transcodes it to mp3 transparently, so no extra configuration is needed.
Connect to OpenReader
From a Docker container, your host machine is reachable at host.docker.internal, so the base URL is http://host.docker.internal:7788/v1. On Docker Desktop (macOS/Windows) this reaches the loopback-bound server above with no extra setup.
On native Linux Docker, host.docker.internal needs --add-host=host.docker.internal:host-gateway on the OpenReader container (or the equivalent extra_hosts entry in docker-compose.yml), and it routes to the host's bridge interface rather than loopback. Pick one:
- Run the OpenReader container with
--network host(ornetwork_mode: host), keep Supertonic on--host 127.0.0.1, and usehttp://127.0.0.1:7788/v1as the base URL. - Or start Supertonic with
--host 0.0.0.0so the bridge can reach it — keep it on a trusted network or behind a firewall.
Recommended (auth + admin): Settings → Admin → Shared providers
- Add a shared provider with type
custom-openai. - Set base URL to
http://host.docker.internal:7788/v1. - Leave API key blank —
supertonic servedoes not require one. - Set default model to
supertonic-3(orsupertonic-2).
Legacy bootstrap seed (optional, first boot only):
API_BASE=http://host.docker.internal:7788/v1
Users select the configured shared provider, model, and voice from Settings → TTS Provider.
Running OpenReader directly on the host
If OpenReader runs on the same machine (e.g. pnpm dev) rather than in Docker, skip host.docker.internal and use http://127.0.0.1:7788/v1 as the base URL everywhere above.