VoxPocket v4: 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.

What is new in v4 (compared with v3):

  • English โ†’ Khmer switching: more practice on sentences that go from English words back to Khmer, including doubled words (Live Preview แž—แŸ’แž›แžถแž˜แž—แŸ’แž›แžถแž˜) and Khmer endings after English (Format แž‘แŸ€แžแž‘แŸ). In v3 these could repeat or break apart.
  • Styles on cloned voices: many more clip + style pairs, so a cloned voice can change its tone.
  • More synthetic data: about 2ร— the VoxCPM2 speech of v3.

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

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.
  • 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 40-sentence test (the same one used for v2 and v3) is not finished yet and will be added here. For reference, v3 scored a median letter error of 7.6% (v2: 12.2%).

Training

  • Starting point: VoxPocket v3, about 15,500 more steps.
  • 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
    • 5 h of English โ†’ Khmer switch sentences (used twice)
    • 79 h of clip + style pairs (used twice)
  • The v3 synthetic set is published as INGMUYLEANG/voxpocket-khmer-tts-v3.

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.

Contact

Questions about training details or hardware: contact the author through the Hugging Face profile or GitHub.

Downloads last month
-
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
(9)
this model

Dataset used to train INGMUYLEANG/VoxPocket-v4

Space using INGMUYLEANG/VoxPocket-v4 1