ResearchText-to-Speech

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.

Authors
Kunat Pipatanakul, Potsawee Manakul, Warit Sirichotedumrong, Sittipong Sripaisarnmongkol, Pakorn Nathong, Phatrasek JirabovonvisutWayu Research, Paxa Labs, Typhoon
Published
18 pages
Report
arXiv:2609.03502v1cs.CL, cs.AI

arXiv(opens in a new tab)PDF(opens in a new tab)

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, brightfemale · teenager · high pitch0:04
  • Young woman, brightfemale · young adult · high pitch0:04
  • Young woman, clearfemale · young adult · moderate pitch0:06
  • Young woman, warmfemale · young adult · low pitch0:06
  • Middle-aged woman, clearfemale · middle-aged · moderate pitch0:06
  • Middle-aged woman, warmfemale · middle-aged · low pitch0:08
  • Elder woman, softfemale · elderly · moderate pitch0:05
  • Elder woman, lowfemale · elderly · low pitch0:09
  • Teen boy, brightmale · teenager · high pitch0:05
  • Young man, clearmale · young adult · moderate pitch0:07
  • Middle-aged man, warmmale · middle-aged · low pitch0:09
  • Elder man, deepmale · elderly · very low pitch0:08

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 categoryItems
Thai-English code-switching391
Names310
Rare words410
Informal spelling210
Long sentences210
Total1,531

What the student scores#

Wayu-Paxa-TTS-Edge against its teacher and a frontier API
Wayu-Paxa-TTS-EdgeParams82MKeyword ↑68.2%Thai CER ↓3.7%Pause prec. ↑91.4%PPER ↓6.7%
OmniVoice teacherParams600MKeyword ↑72.8%Thai CER ↓4.6%Pause prec. ↑89.9%PPER ↓17.6%
Gemini 3.1 Flash TTSParams≥405BKeyword ↑79.8%Thai CER ↓3.3%Pause prec. ↑96.4%PPER ↓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 constructionHoursKeywordCERPause prec.PPER
Unfiltered baseline17.7267.5%4.0%81.3%16.2%
+ pause filtering17.6369.6%3.5%88.4%14.3%
+ bilingual frontend17.6368.7%4.1%88.2%14.8%
+ filtered scale-up40.5867.2%3.9%85.4%11.9%
+ resample rejected41.8169.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 initializationhigher is better
  • Keyword accuracy, from scratch51.7%
  • Keyword accuracy, pretrained69.2%
  • Code-switch accuracy, from scratch22.8%
  • Code-switch accuracy, pretrained65.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 reference15 seconds of Isan-accented speech, from a public demo0:15
  • The student, first sentence82M model, four Isan-only epochs0:10
  • The student, second sentence82M model, four Isan-only epochs0:05

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, which is a different model with a different roster and its own published limits.

Open artifacts