Downloads · 30 days
321
29% of all-time downloads
wayu-ai/wayu-paxa-tts-edge
wayu-paxa-tts-edge is a text-to-speech model from wayu-ai. Use it when you need text read aloud. The card lists the license as cc-by-nc-4.0.
Fixed-voice Thai–English text-to-speech: 82M parameters, 12 voices, 24 kHz, fast enough to run on CPU. It reads Thai, English and code-switched Thai–English text. Release artifact for the paper Building and Evaluating…
Downloads · 30 days
321
29% of all-time downloads
All-time downloads
1.1K
Public
Repo size
333 MB
Likes
4
Trending 1
Click a slice to open those files.
.pth327 MB · 98%
From the Hugging Face model README
Fixed-voice Thai–English text-to-speech: 82M parameters, 12 voices, 24 kHz, fast enough to run on CPU. It reads Thai, English and code-switched Thai–English text. Release artifact for the paper Building and Evaluating Fixed-Voice Thai TTS from Synthetic Speech.
Not to be confused with Paxa TTS Flash — the two target different needs. Wayu-Paxa-TTS-Edge is research-focused and small enough to run locally; Paxa TTS Flash is the production-ready service, with markedly more realistic voices. If you are shipping to users, that is the one you want.
Research artifact. Released for reproducibility and further research alongside the paper above. Not a product: no maintenance or availability commitment, and no warranty. There is no staffed support channel — but community help is very welcome, so please open an issue or a pull request on
wayu-research/wayu-tts-inference.
Code: wayu-research/wayu-tts-inference.
Evaluation: wayu-research/thai-tts-eval.
pip install git+https://github.com/wayu-research/wayu-tts-inference
apt-get install espeak-ng # optional: English words no dictionary lists
from wayu_tts import ThaiTTS
tts = ThaiTTS.from_pretrained("wayu-ai/wayu-paxa-tts-edge")
audio = tts("เมื่อวานเรียก Grab ไปทำงาน รถมาเร็วมาก", voice="m_young_clear")
tts.save("out.wav", audio)
wayu-tts "สวัสดีค่ะ" --voice f_young_clear --out hello.wav
Text longer than the 512-token context is split at sentence boundaries and rejoined, so
there is no length limit at the call site. Generation is not bit-reproducible unless you
pass seed=.
| voice | design | delivery |
|---|---|---|
f_teen_bright | female, teenager, high pitch | engaging |
f_young_bright | female, young adult, high pitch | engaging |
f_young_clear | female, young adult, moderate pitch | neutral |
f_young_warm | female, young adult, low pitch | read |
f_mid_clear | female, middle-aged, moderate pitch | neutral |
f_mid_warm | female, middle-aged, low pitch | read |
f_elderly_soft | female, elderly, moderate pitch | neutral |
f_elderly_low | female, elderly, low pitch | read |
m_teen_bright | male, teenager, high pitch | engaging |
m_young_clear | male, young adult, moderate pitch | neutral |
m_mid_warm | male, middle-aged, low pitch | read |
m_elderly_deep | male, elderly, very low pitch | read |
The voices are synthetic — distilled from a zero-shot voice-cloning teacher (OmniVoice) on designed reference prompts, and there is no cloning path. Because OmniVoice was trained on in-the-wild speech, these synthetic voices may incidentally resemble real individuals; we did not crawl speech data or intentionally clone any real person.
Thai spans go through tltk, Latin spans through misaki-en (the upstream English G2P),
and both land in the model's single shared IPA inventory — so a code-switched sentence comes
out as one phoneme string with no script left in it. Numbers, ฿, %, ๆ and common
abbreviations are expanded to spoken Thai first.
Two benchmarks live in thai-tts-eval,
both scoring audio against text and prescribing nothing about how the audio was made:
wayu-ai/thai-tts-keyword-bench
— 1,531 sentences, each with one hard keyword (brand, name, rare compound, chat
spelling): Challenge-Set Keyword Accuracy. A perfect system cannot score 100% — the
scoring ASR sometimes writes an unlisted homophone of a correctly spoken word — so
compare systems against each other, never against 100%.wayu-ai/thai-tts-pause-bench
— 210 long sentences with frozen gold break masks, scoring where the system breathes:
Prosody Pause Accuracy.Results from the paper. Keyword accuracy uses the 1,531 items and Thai CER a separate 500-sentence set; English CER uses 500 held-out LibriTTS lines; pause and speaker metrics use the 210 long sentences.
| system | params | keyword ↑ | CER Thai ↓ | CER English ↓ | pause precision ↑ | PPER ↓ | intra-word pause ↓ | pauses/clip | speaker sim. ↑ |
|---|---|---|---|---|---|---|---|---|---|
| Wayu-Paxa-TTS-Edge | 82M | 68.2% | 3.7% | 1.1% | 91.4% | 6.7% | 1.4% | 0.89 | 0.890 |
| OmniVoice teacher | 600M | 72.8% | 4.6% | 0.9% | 89.9% | 17.6% | 5.2% | 1.79 | 0.899 |
| Gemini 3.1 Flash TTS | ≥405B (literature-derived proxy) | 79.8% | 3.3% | 0.8% | 96.4% | 13.8% | 1.9% | 4.44 | 0.816 |
speed.Provided "as is", without warranty of any kind, express or implied, to the fullest extent permitted by law (CC-BY-NC-4.0, section 5). The authors, the maintainers and their affiliated institutions accept no responsibility and no liability for any damage, loss, cost or claim arising from use or misuse of this model or its output, and are not responsible for how third parties use it.
This model generates synthetic speech. You are solely responsible for what you synthesize and for complying with the law wherever you deploy it: do not present output as a recording of a real person, do not use it to impersonate anyone or to produce misleading, defamatory or fraudulent audio, and disclose that audio is machine-generated wherever a listener could reasonably be misled.
CC-BY-NC-4.0 — attribution required, commercial use not permitted. For Thai TTS in a commercial product, use Paxa TTS Flash.
Acceptable use. By downloading or using this model you agree to the Wayu Research Acceptable Use terms.
@misc{pipatanakul2026buildingevaluatingfixedvoicethai,
title={Building and Evaluating Fixed-Voice Thai TTS from Synthetic Speech},
author={Kunat Pipatanakul and Potsawee Manakul and Warit Sirichotedumrong and Sittipong Sripaisarnmongkol and Pakorn Nathong and Phatrasek Jirabovonvisut},
year={2026},
eprint={2609.03502},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2609.03502},
}
Kunat Pipatanakul — [email protected]