Instructions to use dogenthq/KorvaTTS with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Supertonic
How to use dogenthq/KorvaTTS 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
KorvaTTS — Vietnamese-first, on-device text-to-speech
KorvaTTS is an open-source text-to-speech model focused on Vietnamese with natural code-switching (Vietnamese sentences containing English words, brand names and tech terms). It runs entirely on-device through ONNX Runtime — no GPU, no API calls — and outputs 44.1 kHz audio.
The model is a from-scratch re-implementation of the 99M-parameter Supertonic 3 architecture (flow-matching TTS) with a vocoder based on BlueCodec, trained on Vietnamese speech. No Supertonic checkpoint was used.
Voices
10 bundled voices (5 female, 5 male). Ref = original recording the voice style was built from. Sample = synthesized by KorvaTTS, a different Vietnamese sentence per voice with natural English code-switching.
| Voice | Name | Gender | Ref | Sample |
|---|---|---|---|---|
bao_kim |
Bảo Kim | female | ||
khanh_vy |
Khánh Vy | female | ||
ngoc_huyen |
Ngọc Huyền | female | ||
phuong_linh |
Phương Linh | female | ||
quynh_nhu |
Quỳnh Như | female | ||
gia_bao |
Gia Bảo | male | ||
hoang_nam |
Hoàng Nam | male | ||
huu_dat |
Hữu Đạt | male | ||
quang_huy |
Quang Huy | male | ||
thanh_phong |
Thanh Phong | male |
Sample sentences
- Bảo Kim (
bao_kim): "Chào mừng bạn đến với podcast Công nghệ mỗi ngày. Hôm nay chúng ta sẽ nói về cách AI đang thay đổi ngành marketing và những skill mà người làm content cần có." - Khánh Vy (
khanh_vy): "Dạ, đơn hàng của anh đã được xác nhận và sẽ ship trong vòng hai ngày. Anh có thể track đơn hàng qua app hoặc website của bên em bất cứ lúc nào ạ." - Ngọc Huyền (
ngoc_huyen): "Trong bài học hôm nay, các em sẽ học cách dùng hàm filter và map trong JavaScript để xử lý dữ liệu. Mở file bài tập lên và chúng ta bắt đầu nhé." - Phương Linh (
phuong_linh): "Tin nhanh buổi sáng: chỉ số VN-Index tăng nhẹ, trong khi nhóm cổ phiếu công nghệ tiếp tục thu hút dòng tiền từ các quỹ đầu tư nước ngoài." - Quỳnh Như (
quynh_nhu): "Bạn có mười phút không? Mình muốn demo tính năng voice cloning mới, feedback của bạn rất quan trọng với team trước khi release." - Gia Bảo (
gia_bao): "Chào cả nhà, hôm nay mình review chiếc laptop mới: màn hình OLED, pin trâu, và hiệu năng thì khỏi bàn. Bấm subscribe để không bỏ lỡ video tiếp theo nhé." - Hoàng Nam (
hoang_nam): "Thưa quý khách, chuyến bay VN một hai ba đi Đà Nẵng sẽ bắt đầu boarding tại cửa số bảy trong vài phút nữa. Xin vui lòng chuẩn bị sẵn thẻ lên máy bay." - Hữu Đạt (
huu_dat): "Sprint này team cần hoàn thành phần login bằng OAuth, còn phần dashboard sẽ dời sang sprint sau. Ai có blocker thì báo trong daily standup nhé." - Quang Huy (
quang_huy): "Nhớ backup dữ liệu trước khi update hệ điều hành, nếu không lỡ mất file thì khó khôi phục lắm đấy. Tốt nhất là sync lên cloud rồi hãy bấm cài đặt." - Thanh Phong (
thanh_phong): "Trận đấu tối nay giữa Việt Nam và Thái Lan sẽ được livestream lúc bảy giờ rưỡi trên kênh chính thức. Anh em nhớ đặt lịch để không bỏ lỡ highlight nhé."
Usage
pip install korvatts
from korvatts import TTS
tts = TTS() # downloads this repo on first run
wav, duration = tts.synthesize(
"Hôm nay team mình sẽ demo tính năng text-to-speech mới.",
voice="khanh_vy",
lang="vi",
total_steps=32, # default, best quality; 8-16 for faster synthesis
)
tts.save_audio(wav, "output.wav")
korvatts synth "Xin chào, đây là KorvaTTS." -v khanh_vy -o hello.wav
Full documentation, CLI reference and roadmap: github.com/dogenthq/KorvaTTS.
Language support
- Vietnamese (
vi) — primary target, including embedded English words. - English (
en) — part of the training data; works, but English quality is not guaranteed to match the original Supertonic 3 English voices. - Other Supertonic 3 language tags are accepted by the encoder but were not trained on.
Compatibility with Supertonic runtimes
The ONNX graph signatures and the voice-style JSON format are identical to Supertonic 3, so onnx/ and voice_styles/ can be dropped into any Supertonic 3 runtime (Python, Node.js, WebGPU, Rust, C++, Swift, Flutter, …). This holds for roadmap phases 1–2; phase 3 will change the architecture and break compatibility. Compatible checkpoints are tagged as such.
Files
| Path | Description |
|---|---|
onnx/duration_predictor.onnx |
Predicts utterance length from text + duration style |
onnx/text_encoder.onnx |
Character-level text encoder conditioned on voice style |
onnx/vector_estimator.onnx |
Flow-matching latent denoiser (256 MB fp32) |
onnx/vocoder.onnx |
BlueCodec-based latent → 44.1 kHz waveform decoder |
onnx/tts.json, onnx/unicode_indexer.json |
Architecture hyper-parameters and character table |
voice_styles/<voice>.json |
Precomputed style tokens (style_ttl 1×50×256, style_dp 1×8×16) |
samples/<voice>.wav |
Synthesized demo clips, one distinct sentence per voice (table above) |
raw_voices/<voice>.wav |
Reference recordings (44.1 kHz mono, 8–12 s) the styles were built from |
Training data
- PhoAudiobook — 941 h of curated Vietnamese audiobook speech (ACL 2025).
- A private Vietnamese/English code-switching corpus collected by the authors (not released).
Community
Questions, voice requests, show-and-tell: Discord · bugs: GitHub Issues.
License
Weights, voice styles and audio in this repository: Apache-2.0 (see MODEL_LICENSE.md). Trained from scratch; not derived from Supertonic weights. Inference code: Apache-2.0, with portions adapted from Supertonic (MIT) — see NOTICE.
Responsible use: only clone or imitate voices you own or have permission to use; do not use generated speech to deceive, harass or impersonate.
Citation
@misc{korvatts2026,
title = {KorvaTTS: Vietnamese-first on-device text-to-speech},
author = {dogenthq},
year = {2026},
howpublished = {\url{https://github.com/dogenthq/KorvaTTS}}
}
Please also cite SupertonicTTS, BlueTTS and PhoAudiobook — BibTeX entries in the GitHub README.