Skip to main content

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

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

supersonic_tts-0.1.0.tar.gz (4.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

supersonic_tts-0.1.0-py3-none-any.whl (6.0 kB view details)

Uploaded Python 3

File details

Details for the file supersonic_tts-0.1.0.tar.gz.

File metadata

  • Download URL: supersonic_tts-0.1.0.tar.gz
  • Upload date:
  • Size: 4.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for supersonic_tts-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0db0ff355a50b06fd8e129c4e8756e02923216a999e18957dff0195e50e7a952
MD5 2157d09da100c0cff43ad0da1503036b
BLAKE2b-256 69444943760a48ecf71a40d48a035c3d5fd78b813504f6f67f355d57f611325d

See more details on using hashes here.

File details

Details for the file supersonic_tts-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: supersonic_tts-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 6.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for supersonic_tts-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3f8d8f803e9711828ca3006a78fe2b0f75aecd7f074713798b88ddbb44c07221
MD5 2763e1a4810dde5d3fe73c7e312d2699
BLAKE2b-256 f6c1143e0c44608931c96d317addef0f883964896fb0aaea285e44a0922dd90e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page