Wayu-Paxa-TTS-Edge
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.
Usage
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=.
Voices
| 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.
Frontend
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.
Evaluation
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 |
Limitations
- Central Thai only. No dialect coverage.
- Dictionary-based G2P. Informal and chat spellings are mis-segmented; ambiguous written forms are read by rule, not by lexicon.
- Long sentences drift. Style buckets past the longest length seen in training reuse the longest style available, and rate control degrades there.
- Fixed voices. No cloning, no reference-audio input, no style control beyond
speed. - Synthetic speech. Do not present output as a recording of a real person.
Disclaimer
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.
License
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.
Citation
@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},
}
Contact
Kunat Pipatanakul — research@wayuresearch.org
- Downloads last month
- 111