Zio TTS v0 β€” Khmer text-to-speech

A small VITS model that speaks Khmer at 24 kHz. First research release of the Zio project (Khmer + English speech, open source).

Status: v0 / experimental. Single male voice, ~1 hour of training audio. Expect clear Khmer-like speech with occasional mispronunciations, not studio quality. English is not supported yet (v0 saw no English audio). No emotion control yet. No quantitative evaluation has been done; see Evaluation.

Samples: samples/ (generated by this exact checkpoint).

Get started

1. Python / CLI (recommended)

git clone https://github.com/sombochea/zio-tts && cd zio-tts
uv sync --extra tts                      # needs Python 3.12+ and ffmpeg
huggingface-cli download sombochea/zio-tts --local-dir zio-tts-v0
uv run zio speak "αžŸαž½αžŸαŸ’αžαžΈ αžαžΎαž’αŸ’αž“αž€αžŸαž»αžαžŸαž”αŸ’αž”αžΆαž™αž‡αžΆαž‘αŸ" hello.wav --run zio-tts-v0

Or from Python:

from zio.tts.infer import synthesize
synthesize("zio-tts-v0", "αžαŸ’αž„αŸƒαž“αŸαŸ‡αž’αžΆαž€αžΆαžŸαž’αžΆαžαž»αž›αŸ’αž’αžŽαžΆαžŸαŸ‹", "out.wav")

Text is normalized (Khmer digits and αŸ›/$ become spoken words) and word-segmented automatically β€” the model was trained on word-spaced Khmer, so unsegmented text sounds worse.

2. ONNX (no PyTorch)

zio-tts.onnx + vocab.json are included.

pip install onnxruntime soundfile "zio @ git+https://github.com/sombochea/zio-tts"
python examples/onnx_infer.py zio-tts.onnx vocab.json "αžŸαž½αžŸαŸ’αžαžΈ" out.wav

Inputs: input (int64 token ids), input_lengths, scales = [noise 0.667, length 1.0, noise_dp 0.8]. Token ids = the vocab.json id of each character with blank_id between every character. Larger length scale = slower speech.

Model details

Architecture VITS (coqui-tts), graphemes (Khmer characters + a–z), no phonemizer
Sample rate 24 kHz mono
Voice 1 speaker (SLR42 speaker km_6753, male)
Training data β‰ˆ863 utterances β‰ˆ 1 h of OpenSLR SLR42 (Google, CC BY-SA 4.0)
Training A100 on Modal, resumed run, ~480 epochs in total (best checkpoint by eval loss)
Files best_model.pth, config.json (coqui), zio-tts.onnx, vocab.json

Why graphemes: espeak-ng has no Khmer voice, so no off-the-shelf G2P exists. A Khmer G2P is future work.

Limitations

  • Khmer only; one voice; no emotion/style control; no voice cloning.
  • ~1 h of data β†’ mispronunciations, unstable prosody on long or rare words. Keep sentences short (< ~15 s).
  • Numbers are read via simple rules up to 999,999,999; dates, units, abbreviations and mixed Khmer/English text are not handled.
  • Not suitable for impersonating anyone. Please disclose that the speech is synthetic.

Evaluation

None yet: no MOS, no intelligibility CER. Treat quality claims as unverified until the project publishes numbers.

License & data

Released under CC BY-SA 4.0 because the training data (SLR42, Β© Google, CC BY-SA 4.0) is share-alike; this is a precaution, not legal advice. Code in the GitHub repo is Apache-2.0.

Citation / credits

Zio project (this repository); VITS (Kim et al., 2021); coqui-tts; OpenSLR SLR42 (Google).

Sample sentences

  1. αžŸαž½αžŸαŸ’αžαžΈ αžαžΎαž’αŸ’αž“αž€αžŸαž»αžαžŸαž”αŸ’αž”αžΆαž™αž‡αžΆαž‘αŸ β€” samples/sample1.wav
  2. αžαŸ’αž„αŸƒαž“αŸαŸ‡αž’αžΆαž€αžΆαžŸαž’αžΆαžαž»αž›αŸ’αž’αžŽαžΆαžŸαŸ‹ β€” samples/sample2.wav
  3. αž˜αŸ’αž αžΌαž”αž“αŸαŸ‡αžαž˜αŸ’αž›αŸƒ αŸ₯αŸ αŸ αŸ αŸ› β€” samples/sample3.wav
  4. αž€αž˜αŸ’αž–αž»αž‡αžΆαž‡αžΆαž”αŸ’αžšαž‘αŸαžŸαž˜αžΆαž“αž”αŸ’αžšαžœαžαŸ’αžαž·αžŸαžΆαžŸαŸ’αžαŸ’αžšαž™αžΌαžšαž›αž„αŸ‹ β€” samples/sample4.wav
Downloads last month
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Paper for sombochea/zio-tts