Skip to content

Releases: ARahim3/supertonic-server

v0.2.0 — Web console + WebSocket TTS + Observability

Choose a tag to compare

@ARahim3 ARahim3 released this 17 May 15:10

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-server

Try it (30 seconds)

supertonic-server --port 8000
# then open http://localhost:8000/ in your browser

The 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 Dockerfile is still the cross-platform CPU image, but the silent CMD ["--device", "cpu"] that overrode -e SUPERTONIC_DEVICE=... has been removed. Setting the env var now actually does what it says.
  • New Dockerfile.cuda for NVIDIA hosts: nvidia/cuda:12.4.1-cudnn-runtime-ubuntu22.04 base, Python 3.12, onnxruntime-gpu swapped in, SUPERTONIC_DEVICE=cuda baked 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 loud WARNING 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

v0.1.0 — OpenAI-compatible server for Supertonic-3

Choose a tag to compare

@ARahim3 ARahim3 released this 15 May 22:34

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 auto picks 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 onnxruntime and the upstream supertonic SDK.

Install

pip install supertonic-server
# or:
uv pip install supertonic-server

30-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.mp3

From 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

Acknowledgements

Built on the excellent work of the Supertone team. License: MIT (server code) + OpenRAIL-M (model weights).