VoxPocket reads Khmer and Khmer mixed with English aloud in a natural voice. Clone a voice from a 4–9 second clip, give it a style (happy, sad, whisper…), or design a new voice from a description.
សួស្តីបងប្អូនទាំងអស់គ្នា ថ្ងៃនេះយើងនឹងនិយាយអំពី Akkhara keyboard។
សួស្តីបងប្អូនទាំងអស់គ្នា ថ្ងៃនេះយើងនឹងនិយាយអំពី Akkhara keyboard។
Type Khmer (or Khmer with Latin letters), pick a voice and a mood, and listen. Free to try.
Higher quality voice: powered by VoxPocket on Hugging Face. Usually ready in a few seconds; when many people use it, requests wait in line.
Use a clean 4–9 s clip of one speaker. Do not copy real people's voices to trick anyone.
Clips from the open preview dataset: one per voice, with a style. Some mix English words into Khmer, the way people really talk.
ប៉ាស្ទ័រខ្លួនឯងគឺមិនមានការភ័យខ្លាចឡើយ។
លោកគឺជាមេដឹកនាំយោធានិងនយោបាយរបស់បារាំង។
ចុះ ខ្ញុំ Copy Storage ផ្ញើទៅក្នុង Group ហើយ។
តើរដ្ឋាភិបាលខ្មែរលោកជ្រាបទេ។
ចុះ ក្រុមហ៊ុនកំពុងរក Developer ដែលចេះ Flutter។
កោះរ៉ុងត្រូវបានប្រកាសឈប់នៅលើផ្លូវលំចេក។
ចុះ ចូលទៅ Battery រួចចុចលើ Charger។
ពន្ធនាំចូលគ្របដណ្តប់លើទំនិញជាច្រើនប្រភេទ។
ពួកគេមិនបាច់ Book Room ទេ។
ឈ្មោះខែទីបួនប្រើតាមចន្ទគតិ។
អូនសូមផ្ញើ Invoice ឆាប់ឆាប់។
រាត្រីថ្ងៃនោះខ្ញុំព្រះករុណាសិងមិនលក់ពេញមួយយប់។
ការប្រមូលវាយនភ័ណ្ឌ LACMA។
មានប្រជាប្រិយភាពខ្លាំងក្លានាសម័យនោះ។
Give a clean 4–9 s clip and exactly what is said in it. VoxPocket reads new sentences in that voice.
Put a style in brackets before the text: (sad, low and slow tone)សួស្តី… Happy, sad, angry, whisper, surprised, news reader…
No clip at all: describe the voice. (A young woman, clear and bright voice)សួស្តី…
from voxcpm.core import VoxCPM import soundfile as sf m = VoxCPM.from_pretrained(hf_model_id="INGMUYLEANG/VoxPocket-v5", 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) # 2) clone + style wav = m.generate(text="(angry and upset tone)ហេតុអ្វីបានជាអ្នកមកយឺតម្ដងទៀត?", prompt_wav_path="my_voice.wav", prompt_text="<words spoken in my_voice.wav>") # 3) design a voice, no clip wav = m.generate(text="(A young woman, clear and bright voice, cheerful tone)សួស្តី។") sf.write("voxpocket.wav", wav, sr)
40 held-out Khmer sentences, same voice clip, cfg 2.0, 10 steps, seed 0. A Khmer speech recognizer (seanghay/Qwen3-ASR-0.6B-Khmer) listens back and counts letter errors. Lower is better.
| 40 held-out sentences | median error | mean error | sentences > 10% errors |
|---|---|---|---|
| VoxPocket v5 (0.89B) | 4.3% | 6.1% | 8 / 40 |
| VoxPocket v4 | 6.6% | 7.2% | 10 / 40 |
| VoxCPM2 (2.38B, the teacher) | 4.8% | 7.0% | 12 / 40 |
VoxPocket is VoxCPM 1.5 (an open, tokenizer-free TTS model) fine-tuned on Khmer over several rounds, with speech distilled from the bigger VoxCPM2.
237 h of real Khmer speech (double weight, so voices stay natural), ~600 h of synthetic VoxCPM2 speech checked by a speech recognizer (kept only ≤ 15% errors), and 157 h of voice clip + style pairs. 340 h are new in v5: emotions, long reading, English words inside Khmer.
A text-semantic language model (24 layers) plans the speech; a residual acoustic model and a local diffusion transformer add the voice and tone; the AudioVAE decoder makes the 44.1 kHz waveform. No audio tokenizer.
From the previous VoxPocket, one more full pass over the data (778,028 clips): learning rate 2e-5 with warm-up, 43,200 steps, about 14 h on one RTX 5090. Every release is checked by listening back with a Khmer speech recognizer.
Synthetic Khmer speech made with VoxCPM2, every clip read back by a speech recognizer and kept only when it was right.
The model on Hugging Face, with usage and results.
Ready voices, styles and voice design in the browser.
Code and other projects by Ing Muyleang.
VoxCPM 1.5 (base) and VoxCPM2 (teacher) by OpenBMB. Please credit VoxCPM too.
Type Sing Khmer, get Khmer script: an offline AI keyboard for phones and computers.
Everything by Ing Muyleang on Hugging Face.
@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-v5}
}