VoxPocket: small Khmer text-to-speech

VoxPocket is a 0.8B Khmer TTS model (44.1 kHz). It was fine-tuned from VoxCPM 1.5 on real Khmer speech and on synthetic speech distilled from VoxCPM2. It reads Khmer, Khmer mixed with English words, and plain English. It can clone a voice from a short clip and take a style or a voice description.

๐Ÿ—ฃ๏ธ Try it in your browser, no download needed: VoxPocket demo. It has ready voices, styles and voice design.

VoxPocket architecture: training, model, and three ways to use it

Use

from voxcpm.core import VoxCPM
import soundfile as sf

m = VoxCPM.from_pretrained(hf_model_id="INGMUYLEANG/VoxPocket-v4", load_denoiser=False)
sr = m.tts_model.sample_rate  # 44100

# 1) clone a voice: a clean 4โ€“9 s clip + exactly what is said in it
wav = m.generate(text="แžŸแžฝแžŸแŸ’แžแžธแž”แž„แž”แŸ’แžขแžผแž“แž‘แžถแŸ†แž„แžขแžŸแŸ‹แž‚แŸ’แž“แžถ แžขแžšแž‚แžปแžŽแž…แŸ’แžšแžพแž“แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž‚แžถแŸ†แž‘แŸ’แžšแŸ”",
                 prompt_wav_path="my_voice.wav", prompt_text="<words spoken in my_voice.wav>",
                 cfg_value=2.0, inference_timesteps=10)
sf.write("clone.wav", wav, sr)

# 2) clone + style: put the style in brackets before the text
wav = m.generate(text="(sad, low and slow tone)แžŸแžฝแžŸแŸ’แžแžธแž”แž„แž”แŸ’แžขแžผแž“แž‘แžถแŸ†แž„แžขแžŸแŸ‹แž‚แŸ’แž“แžถแŸ”",
                 prompt_wav_path="my_voice.wav", prompt_text="<words spoken in my_voice.wav>")

# 3) design a voice, no clip: describe it in brackets
wav = m.generate(text="(A young woman, clear and bright voice, cheerful tone)แžŸแžฝแžŸแŸ’แžแžธแž”แž„แž”แŸ’แžขแžผแž“แž‘แžถแŸ†แž„แžขแžŸแŸ‹แž‚แŸ’แž“แžถแŸ”")

Tips:

  • Reference clips: keep them short, about 4โ€“9 s, and clean, with the exact words that are spoken.
  • Long text: split it into sentences.
  • Doubled words (แŸ—): write them out (แž—แŸ’แž›แžถแž˜แž—แŸ’แž›แžถแž˜) or let your text step expand them; English words next to Khmer are fine.
  • Styles: the phrases used in training work best, for example sad, low and slow tone, excited and energetic, whispering quietly, happy, smiling tone, calm, slow and steady, serious and clear news-reader tone.

Results

The test reads 40 held-out Khmer sentences with the same voice clip (cfg 2.0, 10 steps). A Khmer speech recognizer (seanghay/Qwen3-ASR-0.6B-Khmer) listens back, and we count letter errors (lower is better):

median mean perfect sentences sentences with > 10% errors
VoxPocket 5.4% 6.9% 8 / 40 11 / 40

Training

  • Starting point: VoxCPM 1.5, fine-tuned on Khmer over several rounds.
  • Data: about 670 h in the training list.
    • 237 h of real Khmer speech
    • 270 h of synthetic VoxCPM2 speech, all checked by a speech recognizer: Khmer, mixed, English, clone, style and designed voices
    • 79 h of voice clip + style pairs, so a cloned voice can change its tone
    • 5 h of English โ†’ Khmer switch sentences (doubled words and Khmer endings right after English)
  • Part of the synthetic speech is published as INGMUYLEANG/voxpocket-khmer-tts-v4 (gated).
  • Hardware and time: see Training hardware below.

Training hardware

GPU GPU memory Training run
1ร— NVIDIA GeForce RTX 5090 32 GB (CUDA 13) newest run: about 1,010 h of audio, about 15 h

Limits

  • Styles on cloned voices are still weak: the tone changes only a little. Designed voices (no clip) follow descriptions better.
  • Rare words and names are sometimes swapped for common ones. English loanwords inside Khmer can sound Khmer-ish.
  • English is basic. The model is made for Khmer first.
  • Do not use it to impersonate real people or to make deceptive audio. Only clone voices you have permission to use.

Citation

If you use this work, please cite:

@misc{ing2026voxpocket,
  author    = {Ing, Muyleang},
  title     = {VoxPocket: A Small Khmer Text-to-Speech Model with Voice Cloning and Styles},
  year      = {2026},
  publisher = {Hugging Face},
  url       = {https://huggingface.co/INGMUYLEANG/VoxPocket-v4}
}

The dataset:

@misc{ing2026voxpocketdata,
  author    = {Ing, Muyleang},
  title     = {VoxPocket Khmer TTS: A VoxCPM2 Distillation Dataset for Khmer Speech},
  year      = {2026},
  publisher = {Hugging Face},
  url       = {https://huggingface.co/datasets/INGMUYLEANG/voxpocket-khmer-tts-v4}
}

VoxPocket is built on VoxCPM 1.5 and its synthetic data was made with VoxCPM2 (OpenBMB); please also credit VoxCPM when you use it.

Author

Ing Muyleang, built with the help of AI tools (agy, Claude).

Contact

Questions: contact the author through the Hugging Face profile or GitHub.

Downloads last month
66
Safetensors
Model size
0.8B params
Tensor type
F32
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for INGMUYLEANG/VoxPocket-v4

Finetuned
(8)
this model
Finetunes
1 model

Dataset used to train INGMUYLEANG/VoxPocket-v4