Instructions to use Supertone/supertonic-3 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Supertonic
How to use Supertone/supertonic-3 with Supertonic:
from supertonic import TTS tts = TTS(auto_download=True) style = tts.get_voice_style(voice_name="M1") text = "The train delay was announced at 4:45 PM on Wed, Apr 3, 2024 due to track maintenance." wav, duration = tts.synthesize(text, voice_style=style) tts.save_audio(wav, "output.wav")
- Notebooks
- Google Colab
- Kaggle
Built an Android app that runs Supertonic 3 fully on-device - Voxtonic
Thanks for releasing this model. The 31-language coverage and the expression tags are what made it worth building on, so I spent the last few weeks packaging it into an Android app.
Voxtonic runs Supertonic 3 on the phone's CPU through ONNX Runtime. The four graphs (text encoder, duration predictor, vector estimator, vocoder - about 400 MB total) download once from this repo on first launch, and after that synthesis works with no network at all. No server, no account, nothing leaves the device.
Stack is Flutter + ONNX Runtime. Android only for now.
What's in it:
- All 31 synthesis languages
- The 10 preset styles from
voice_styles/(5F / 5M) laugh/breath/sightags insertable inline from chips above the editor- WAV export through the system share sheet
- Local library with favorites
- A Voice Builder screen that opens your hosted reference-design page
37-second demo, 6 voices across English, Japanese and Korean - call center, game character, RPG narrator, audiobook, mystery novel, news read:
(also on YouTube: https://www.youtube.com/watch?v=p9941HJpM80 )
Play Store: https://play.google.com/store/apps/details?id=io.ghyeok.supertonic
To be clear about what this is: an independent side project, not affiliated with or endorsed by Supertone. It is free and supported by AdMob ads. The model is used under the license in this repo.
Two things I would genuinely like input on:
- Whether the way I credit the model and the license is what you would want. Happy to change any of it.
- Text normalization across the 31 languages was most of the work. If there is a canonical preprocessing path you recommend before the tokenizer, I would rather match it than keep my own heuristics.
Good that it works fully offline once the download is done. The thing that usually bites on this shape is cold start rather than steady state: loading four ONNX graphs on the first tap makes that first utterance far slower than every one after it, so warming them at app launch is normally worth the extra seconds up front.
On CPU the other lever is thread affinity. ONNX Runtime's defaults tend to spread work across big.LITTLE cores, and the scheduler will happily land the vocoder on a little core, which shows up as inconsistent synthesis time rather than uniformly slow. Pinning to the performance cluster is often a bigger win than any graph-level optimisation.