Releases: ARahim3/supertonic-server
Release list
v0.2.0 — Web console + WebSocket TTS + Observability
supertonic-server now ships with a polished single-page web UI at http://localhost:8000/. Test voices, tune parameters, hit play — and copy the exact curl / OpenAI / Pipecat / LiveKit snippet that would produce the same audio from your code. Plus a new WebSocket TTS endpoint for voice agents and an in-process Observatory with Prometheus-compatible metrics.
Install / upgrade
pip install -U supertonic-server
# or
uv pip install -U supertonic-serverTry it (30 seconds)
supertonic-server --port 8000
# then open http://localhost:8000/ in your browserThe HTTP API (/v1/audio/speech, /v1/voices, /v1/models, /healthz) is unchanged from v0.1.0. The console is just another client of the same server. Disable it entirely with --no-ui if you don't want the / route.
Docker — what changed in v0.2.0
- The default
Dockerfileis still the cross-platform CPU image, but the silentCMD ["--device", "cpu"]that overrode-e SUPERTONIC_DEVICE=...has been removed. Setting the env var now actually does what it says. - New
Dockerfile.cudafor NVIDIA hosts:nvidia/cuda:12.4.1-cudnn-runtime-ubuntu22.04base, Python 3.12,onnxruntime-gpuswapped in,SUPERTONIC_DEVICE=cudabaked into the env, plus a build-time sanity check so a misbuilt image fails fast instead of silently running on CPU. resolve_providers()now logs a loudWARNING device=cuda requested but CUDAExecutionProvider is not available …if you ask for a hardware accelerator that isn't installed. The previous silent CPU fallback was a footgun for anyone running the default Dockerfile with--gpus all.
Compatibility
| Supported | |
|---|---|
| Python | 3.11, 3.12, 3.13 |
| OS | macOS (incl. Apple Silicon), Linux, Windows |
| Hardware | CPU; CoreML (Apple Silicon); CUDA (via onnxruntime-gpu) |
| Browsers (for the console) | any modern Chromium / Firefox / Safari |
Notes
- The console is read-only with respect to server lifecycle — it doesn't start/stop the server or change its port. That's still done via the CLI (
supertonic-server --port 9000). If you'd find a "manager"-style desktop wrapper useful, open an issue and tell me how you'd use it. - The UI is built ahead of time and committed under
src/supertonic_server/ui/dist/. Devs who want to rebuild it:cd src/supertonic_server/ui && npm install && npm run build.
Links
- 📖 README
- 🤗 Supertonic-3 on Hugging Face
- 🔧 supertone-inc/supertonic (upstream SDK)
- 🐛 Issues
v0.1.0 — OpenAI-compatible server for Supertonic-3
v0.1.0 — OpenAI-compatible server for Supertonic-3
supertonic-server is a drop-in local replacement for OpenAI's /v1/audio/speech endpoint, powered by the Supertonic-3 on-device TTS model. Point any OpenAI-TTS-compatible client — the OpenAI SDK, Pipecat, LiveKit Agents, OpenWebUI, Continue.dev — at http://localhost:8000/v1 and you're done.
Highlights
- 🎙️ OpenAI-compatible
POST /v1/audio/speech,GET /v1/voices,GET /v1/models,GET /healthz. - ⚡ Streaming by default — sentence-level chunks over HTTP/1.1 chunked transfer. First audio byte typically lands in ~450–650 ms on an M-series Mac.
- 🧠 Cross-platform acceleration —
--device autopicks CUDA → CoreML → CPU based on what's available. Same wheel, every OS. - 🌍 31 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) + a fallback code.
- 🗣️ 10 built-in voices (F1–F5, M1–M5) plus all 13 OpenAI voice aliases (
alloy,nova,echo,onyx,shimmer, …) mapped automatically so existing clients work zero-config. - 🔥 Warmup on startup so the first real request doesn't pay the CoreML/CUDA graph-compile tax.
- 🐳 Dockerfile (CPU default, with 3-line instructions to swap to CUDA).
- 📦 ~16 KB pure-Python wheel — the heavy lifting is
onnxruntimeand the upstreamsupertonicSDK.
Install
pip install supertonic-server
# or:
uv pip install supertonic-server30-second quick start
supertonic-server --port 8000
curl -X POST http://localhost:8000/v1/audio/speech \
-H 'Content-Type: application/json' \
-d '{"input":"Hello, world.","voice":"alloy","response_format":"mp3"}' \
--output hello.mp3From Python (OpenAI SDK):
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="not-needed")
client.audio.speech.create(model="supertonic-3", voice="nova",
input="Local TTS, OpenAI API.").stream_to_file("nova.mp3")Compatibility
| Supported | |
|---|---|
| Python | 3.11, 3.12, 3.13 |
| OS | macOS (incl. Apple Silicon), Linux, Windows |
| Hardware | CPU; CoreML (Apple Silicon); CUDA (via onnxruntime-gpu) |
| Audio formats | mp3, wav, pcm |
| Sample rate | 44 100 Hz mono int16 |
| Tested with | OpenAI Python SDK, Pipecat 1.2, LiveKit openai.TTS |
Known limitations
- Streaming granularity is per sentence (the diffusion vocoder runs once per chunk). Sub-sentence streaming is not possible without model changes.
- Output formats are MP3 / WAV / PCM only. Opus / AAC / FLAC are on the roadmap.
- No runtime voice cloning — use Supertone's separate Voice Builder for that.
Links
- 📖 README — full usage and integration docs
- 🤗 Supertonic-3 on Hugging Face (model weights, OpenRAIL-M)
- 🔧 supertone-inc/supertonic (upstream SDK + multi-language bindings)
- 🐛 Issues
Acknowledgements
Built on the excellent work of the Supertone team. License: MIT (server code) + OpenRAIL-M (model weights).