# A Thai voice from fifteen seconds of speech

An 82M model small enough to run on the device, trained entirely on speech a larger model generated, and the benchmark that says what it still gets wrong.

Technical report arXiv:2609.03502v1 (https://arxiv.org/abs/2609.03502v1), 2026-09-03, 18 pages, cs.CL, cs.AI.
Authors: Kunat Pipatanakul, Potsawee Manakul, Warit Sirichotedumrong, Sittipong Sripaisarnmongkol, Pakorn Nathong, Phatrasek Jirabovonvisut. Affiliations: Wayu Research, Paxa Labs, Typhoon.

Figures below are the report's own, measured on its own benchmarks. They are not specifications of any Paxa Labs API.

A voice-cloning model can reproduce a speaker from a few seconds of audio, but it needs a large generative backbone and a GPU to do it. A compact fixed-voice system runs anywhere, and needs hours of studio recording from the speaker it imitates. This report takes a third route: use the cloning model as a data source, turn a fifteen-second reference into a synthetic corpus, and train an 82M student on that. The student never hears a real recording of the voice it speaks with.

The result, Wayu-Paxa-TTS-Edge, reads Thai and English on the device. It scores 68.2% on a held-out set of 1,531 sentences built around expressions Thai speech models get wrong. It places phrase breaks more accurately than the 600M teacher it learned from, at 82M parameters.

## One teacher, filtered, one student

Thai text is prepared and verbalized, a zero-shot teacher renders it against a frozen voice reference, a quality filter accepts or rejects each candidate, and what survives trains the student. The filter rejects 23.0% of what the teacher produces. Rejection is not the same as deletion. A rejected text is re-rendered, because dropping it would quietly remove the hardest sentences from the corpus.

**Twelve voices, none of them recorded**: Each one began as a written description that the teacher turned into a speaker. These are the references the synthetic corpus was built from.

- Teen girl, bright (female · teenager · high pitch): https://paxalabs.com/audio/research/voices/f_teen_bright.mp3
- Young woman, bright (female · young adult · high pitch): https://paxalabs.com/audio/research/voices/f_young_bright.mp3
- Young woman, clear (female · young adult · moderate pitch): https://paxalabs.com/audio/research/voices/f_young_clear.mp3
- Young woman, warm (female · young adult · low pitch): https://paxalabs.com/audio/research/voices/f_young_warm.mp3
- Middle-aged woman, clear (female · middle-aged · moderate pitch): https://paxalabs.com/audio/research/voices/f_mid_clear.mp3
- Middle-aged woman, warm (female · middle-aged · low pitch): https://paxalabs.com/audio/research/voices/f_mid_warm.mp3
- Elder woman, soft (female · elderly · moderate pitch): https://paxalabs.com/audio/research/voices/f_elderly_soft.mp3
- Elder woman, low (female · elderly · low pitch): https://paxalabs.com/audio/research/voices/f_elderly_low.mp3
- Teen boy, bright (male · teenager · high pitch): https://paxalabs.com/audio/research/voices/m_teen_bright.mp3
- Young man, clear (male · young adult · moderate pitch): https://paxalabs.com/audio/research/voices/m_young_clear.mp3
- Middle-aged man, warm (male · middle-aged · low pitch): https://paxalabs.com/audio/research/voices/m_mid_warm.mp3
- Elder man, deep (male · elderly · very low pitch): https://paxalabs.com/audio/research/voices/m_elderly_deep.mp3

## What character error rate hides

Word error rate needs word boundaries, and Thai does not mark them. Character error rate avoids that, and then hides the errors that matter: a 150-character sentence can mispronounce a brand name and still score around 1% CER, which reads as fine. A transcript can also be perfectly correct while the waveform pauses in the middle of a word.

So the report measures four things: correctness on a challenge set of local expressions, pause placement, speaker similarity, and speaking rate. The challenge set holds 1,531 sentences, each containing one target expression, scored by whether the transcript contains it.

| Challenge-set category | Items |
| --- | --- |
| Thai-English code-switching | 391 |
| Names | 310 |
| Rare words | 410 |
| Informal spelling | 210 |
| Long sentences | 210 |
| Total | 1,531 |

## What the student scores

**Wayu-Paxa-TTS-Edge against its teacher and a frontier API**

| System | Params | Keyword ↑ | Thai CER ↓ | Pause prec. ↑ | PPER ↓ |
| --- | --- | --- | --- | --- | --- |
| Wayu-Paxa-TTS-Edge | 82M | 68.2% | 3.7% | 91.4% | 6.7% |
| OmniVoice teacher | 600M | 72.8% | 4.6% | 89.9% | 17.6% |
| Gemini 3.1 Flash TTS | ≥405B | 79.8% | 3.3% | 96.4% | 13.8% |

Table 8 of the report. PPER is the pause-placement error rate. Keyword accuracy uses 1,531 items and Thai CER 500; pause metrics use 210 long sentences. The Gemini parameter count is a literature-derived lower bound. The vendor publishes no figure.

Compression costs the student difficult lexical realization and almost nothing else. It trails both larger systems on the challenge set, improves on the teacher's Thai CER, and produces the fewest pause errors of the three. Its rate of pauses inside a word is the lowest at 1.4%. Adding English took its English CER from 4.4% to 1.1% while leaving speaker similarity and the intra-word pause rate unchanged.

## What each step of the recipe bought

| Corpus construction | Hours | Keyword | CER | Pause prec. | PPER |
| --- | --- | --- | --- | --- | --- |
| Unfiltered baseline | 17.72 | 67.5% | 4.0% | 81.3% | 16.2% |
| + pause filtering | 17.63 | 69.6% | 3.5% | 88.4% | 14.3% |
| + bilingual frontend | 17.63 | 68.7% | 4.1% | 88.2% | 14.8% |
| + filtered scale-up | 40.58 | 67.2% | 3.9% | 85.4% | 11.9% |
| + resample rejected | 41.81 | 69.2% | 3.4% | 92.8% | 6.2% |

Scaling the corpus from 17.63 to 40.58 hours under the same filter improved the pause metrics and cost keyword accuracy. Repeated filtering thins out exactly the hard examples the challenge set asks about. Resampling the rejected texts recovers that coverage and produces the best configuration on every measure but one.

**Trained from scratch against pretrained initialization** (higher is better)

| Configuration | Value |
| --- | --- |
| Keyword accuracy, from scratch | 51.7% |
| Keyword accuracy, pretrained | 69.2% |
| Code-switch accuracy, from scratch | 22.8% |
| Code-switch accuracy, pretrained | 65.5% |

Table 6 of the report, on the Thai-only model. Reusing the pretrained backbone is worth 17.5 points of keyword accuracy overall and 42.7 on code-switching alone: the student inherits far more from its initialization than its size suggests.

## A dialect with no corpus

Most language varieties will never have a licensed corpus or a recording studio, which is why most of them have no speech technology at all. The same pipeline was pointed at Isan with one fifteen-second crop of Isan-accented speech: the teacher rendered about 1.5 hours from it, and the student was fine-tuned for four epochs. Nothing else was recorded.

**Fifteen seconds in, a dialect voice out**: The reference clip, then the fine-tuned 82M model reading text from the Thai Dialect Isan Speech Corpus.

- The reference (15 seconds of Isan-accented speech, from a public demo): https://paxalabs.com/audio/research/isan/ref_15s_donor.mp3
- The student, first sentence (82M model, four Isan-only epochs): https://paxalabs.com/audio/research/isan/00_student_ep12.mp3
- The student, second sentence (82M model, four Isan-only epochs): https://paxalabs.com/audio/research/isan/01_student_ep12.mp3

The adapted student sits at 0.842 cosine similarity to the reference against the teacher's 0.854, and reaches 5.5% Isan CER where the teacher reaches 6.6%. It pays for that in Central Thai, where CER rises from 3.4% to 5.1% and keyword accuracy falls from 69.2% to 65.8%. CER measures intelligibility and nothing more. Whether the result sounds natural to an Isan speaker is not something this evaluation can answer.

## Where the method stops

The student cannot learn what the teacher cannot say. Sampling the teacher 118 times and keeping any correct rendering lifts exact accuracy from 72.8% to 87.9%. That puts 15.1 points of the gap within reach of better sampling alone. The rest tracks the teacher's own training data. At 118 samples, keywords the teacher never saw are recovered 66% of the time, against 98% for keywords it saw between 100 and 10,000 times. What binds is coverage.

Both evaluation instruments lean on heuristics. Pause scoring composes Thai word segmentation with CTC forced alignment, and its accuracy is bounded by both; keyword scoring uses exact matching against accepted forms. The rates are most reliable as comparisons between systems measured with the same instrument.

## If you are building on Thai speech

The practical finding is that the expensive part of a Thai voice is not the model. It is the coverage of the data behind it, and text normalization and pronunciation handling sit outside the acoustic model, where 1.1 points of challenge-set accuracy were recovered with the weights frozen. Anyone shipping Thai speech can measure the same things: the evaluation framework and both benchmarks are open.

This is research. It is not a product specification. Paxa Labs serves Thai speech through its own [text to speech API](https://paxalabs.com/text-to-speech), which is a different model with a different roster and its own published limits.

## Released artifacts

- wayu-ai/wayu-paxa-tts-edge: https://huggingface.co/wayu-ai/wayu-paxa-tts-edge
- wayu-ai/thai-tts-keyword-bench: https://huggingface.co/datasets/wayu-ai/thai-tts-keyword-bench
- wayu-ai/thai-tts-pause-bench: https://huggingface.co/datasets/wayu-ai/thai-tts-pause-bench
- wayu-research/thai-tts-eval: https://github.com/wayu-research/thai-tts-eval
- wayu-research/wayu-tts-inference: https://github.com/wayu-research/wayu-tts-inference
- kunato/wayu-paxa-tts-demo: https://huggingface.co/spaces/kunato/wayu-paxa-tts-demo
