Instructions to use Rabe3/vox-loras with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- VoxCPM
How to use Rabe3/vox-loras with VoxCPM:
import soundfile as sf from voxcpm import VoxCPM model = VoxCPM.from_pretrained("Rabe3/vox-loras") wav = model.generate( text="VoxCPM is an innovative end-to-end TTS model from ModelBest, designed to generate highly expressive speech.", prompt_wav_path=None, # optional: path to a prompt speech for voice cloning prompt_text=None, # optional: reference text cfg_value=2.0, # LM guidance on LocDiT, higher for better adherence to the prompt, but maybe worse inference_timesteps=10, # LocDiT inference timesteps, higher for better result, lower for fast speed normalize=True, # enable external TN tool denoise=True, # enable external Denoise tool retry_badcase=True, # enable retrying mode for some bad cases (unstoppable) retry_badcase_max_times=3, # maximum retrying times retry_badcase_ratio_threshold=6.0, # maximum length restriction for bad case detection (simple but effective), it could be adjusted for slow pace speech ) sf.write("output.wav", wav, 16000) print("saved: output.wav") - Notebooks
- Google Colab
- Kaggle
vox-loras
Unmerged VoxCPM 2 LoRA adapters from the Saudi dialectal Arabic fine-tune โ every saved checkpoint, kept separate so you can A/B steps yourself.
For ready-to-use merged weights, see
Rabe3/Coda-saudi-final
(step 3000, folded into the base).
Contents
| checkpoint | val diff loss | val total loss |
|---|---|---|
step_0000000 |
0.8712 | 0.9740 |
step_0000500 |
0.8444 | 0.8608 |
step_0001000 |
0.8362 | 0.8745 |
step_0001500 |
0.8315 | 0.8732 |
step_0002000 |
0.8241 | 0.8685 |
step_0002500 |
0.8307 | 0.8754 |
step_0003000 |
0.8268 | 0.8714 |
step_0000000 is the pre-training-loop snapshot (LoRA B still zeroed), so it is
functionally identical to the unmodified base model โ useful as a control.
Each directory holds lora_weights.safetensors (384 tensors, ~145 MB),
lora_config.json, and training_state.json. Optimizer and scheduler states are
not included; these are inference adapters, not resumable training states.
Also included: training_config.yaml (the exact run config) and train.log.
Validation ran every 250 steps but checkpoints were written every 500, so the lowest recorded validation point (0.8199 at step 2250) has no corresponding file. Losses are flat from ~step 1750 within a ยฑ0.01 band, narrower than the noise of a 64-clip validation split โ pick by listening, and prefer the earlier checkpoint when two sound equal.
Usage
Adapters are r=64, alpha=64. The VoxCPM CLI defaults to --lora-r 32 --lora-alpha 16, so you must pass both explicitly or the adapter loads at the
wrong scale.
python -m voxcpm.cli clone \
--model-path openbmb/VoxCPM2 \
--lora-path step_0003000 \
--lora-r 64 --lora-alpha 64 \
--reference-audio your_reference.wav \
--text "ูุง ููุง ูุงูููุ ููู ุญุงูู ุงูููู
ุ" \
--seed 1234 --output out.wav
A correct load prints Loaded 384 LoRA parameters, skipped 0. Anything less means
key mismatch.
Use reference mode (--reference-audio), which is the format these adapters
were trained on. Continuation mode (--prompt-audio + --prompt-text)
concatenates the prompt text onto the target text with no separator, so the model
will speak the prompt transcript before your text.
Training
| base model | openbmb/VoxCPM2 |
| data | Rabe3/saudi-clean-vox โ 2132 clips / 3.47 h, 7 speakers |
| split | 2068 train / 64 val |
| LoRA | r=64, alpha=64, dropout=0.0; LM โ, DiT โ, projections โ |
| target modules | q_proj, k_proj, v_proj, o_proj |
| optimizer | lr 1e-4, weight decay 0.01, 200 warmup steps, cosine schedule |
| batch | 4 ร 4 grad-accum = effective 16 |
| steps | 3000 (โ23 epochs), ~1.13 s/step, ~1 h on one H100 NVL |
The goal was tone, naturalness, and dialect transfer rather than plain speaker cloning, hence r=64 rather than the more common 32, and DiT adaptation enabled โ the DiT path is what carries timbre and prosody.
lora_config.json files here have base_model set to openbmb/VoxCPM2; the
originals recorded a local filesystem path.
Two byte-identical duplicates from the training run are omitted: step_0002999
(loop-end save) and latest, both equal to step_0003000.
License
Base model is Apache-2.0; the training data is CC-BY-NC-4.0. These adapters are released under CC-BY-NC-4.0 โ non-commercial use only.
Model tree for Rabe3/vox-loras
Base model
openbmb/VoxCPM2