Skip to main content

supersonic-tts

Stdin-friendly CLI + Python API wrapper for Supertonic — lightning-fast, on-device, multilingual TTS via ONNX Runtime.

No cloud API. No data leaves your machine. 31 languages. 10 voices.

Why supersonic-tts?

Supertonic's official CLI takes text as a positional argument — awkward for piped input, shell scripts, and AI agents. supersonic-tts wraps it with:

  • Stdin support — pipe text directly: echo "hello" | supersonic-tts -o out.wav
  • Hermes Agent integration — drop-in command-based TTS provider
  • Same engine — uses supertonic under the hood (supertonic-3, ONNX)

Install

pip install supersonic-tts

First run auto-downloads the model (~305MB) from HuggingFace.

Usage

CLI

# Read from argument
supersonic-tts "Hello world" -o output.wav

# Read from stdin (piped)
echo "Hello from stdin" | supersonic-tts -o output.wav

# Read from file
cat long_text.txt | supersonic-tts -o output.wav

# Choose voice
supersonic-tts "Crisp and confident" -o output.wav --voice F4

# Multilingual
supersonic-tts "Bonjour le monde" -o french.wav --lang fr --voice F1

# Adjust speed
supersonic-tts "Fast talk" -o fast.wav --speed 1.5

# Higher quality
supersonic-tts "Premium quality" -o premium.wav --steps 10

Python API

from supersonic_tts import SupersonicTTS

tts = SupersonicTTS()
wav, duration = tts.synthesize("Hello world", voice="F4", lang="en")
tts.save("output.wav")

Hermes Agent Integration

Add to ~/.hermes/config.yaml:

tts:
  provider: supersonic-tts
  supersonic-tts:
    type: command
    command: supersonic-tts -o {output_path} --voice {voice} < {input_path}
    voice: F4
    model: supertonic-3
    output_format: wav
    voice_compatible: true
    timeout: 60

Voices

Voice Style
M1 Lively, upbeat male
M2 Deep, calm male
M3 Authoritative male
M4 Soft, friendly male
M5 Warm, storytelling male
F1 Calm, composed female
F2 Bright, cheerful female
F3 Professional announcer female
F4 Crisp, confident female
F5 Gentle, soothing female

Languages

31 languages (supertonic-3): 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, na (fallback)

License

MIT (code) — supertonic model uses OpenRAIL-M

Metadata

Release files for supersonic-tts 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for supersonic-tts 0.1.0
File Size Uploaded
supersonic_tts-0.1.0.tar.gz 4.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for supersonic-tts 0.1.0
File Interpreter ABI Platform
supersonic_tts-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 10.5 kB

Release files / supersonic_tts-0.1.0.tar.gz

Download URL supersonic_tts-0.1.0.tar.gz
Size 4.5 kB
Tags Source
SHA-256 checksum
How to use checksums
0db0ff355a50b06fd8e129c4e8756e02923216a999e18957dff0195e50e7a952
BLAKE2b-256 checksum
How to use checksums
69444943760a48ecf71a40d48a035c3d5fd78b813504f6f67f355d57f611325d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Release files / supersonic_tts-0.1.0-py3-none-any.whl

Download URL supersonic_tts-0.1.0-py3-none-any.whl
Size 6.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3f8d8f803e9711828ca3006a78fe2b0f75aecd7f074713798b88ddbb44c07221
BLAKE2b-256 checksum
How to use checksums
f6c1143e0c44608931c96d317addef0f883964896fb0aaea285e44a0922dd90e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page