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.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for Rabe3/vox-loras

Base model

openbmb/VoxCPM2
Adapter
(8)
this model

Dataset used to train Rabe3/vox-loras