VoxCPM2-Yoruba (Experimental)

⚠️ Experimental research model. An early full fine-tune of VoxCPM2 for Yoruba and Yoruba–English code-switched speech. Promising but not production-grade — expect occasional mispronunciations, tone errors, and artifacts.

A Yoruba text-to-speech model from LyngualLabs, full fine-tuned from openbmb/VoxCPM2 — a 2B, tokenizer-free, voice-cloning TTS. It speaks Yoruba in native script, including code-switching with English, with no G2P / espeak / language tags.

Why

VoxCPM2 ships 30 languages but not Yoruba. Adapting a new language is a high-rank change, so LoRA plateaued; this is the full fine-tune (all 2B weights) that installs Yoruba phonetics and tones.

Training data

Source Hours Notes
YECS (LyngualLabs) ~95 h Yoruba–English code-switch, multi-speaker, 16 kHz
WAXAL Yoruba (google/WaxalNLP) ~7.5 h spontaneous
Total ~102 h pooled, 16 kHz

Training

  • Method: full fine-tuning (all weights), not LoRA
  • Base: openbmb/VoxCPM2 (2B) · Steps: 5000 (selected at the validation-loss minimum)
  • LR: 1e-5 cosine · Effective batch: 32 (bs 4 × grad-accum 8) · bf16
  • Hardware: single NVIDIA RTX 6000 Blackwell (96 GB)

Usage

A voice-cloning model: give a short reference clip + its transcript, and it speaks your text in that voice — or use voice-design (a text description, no reference).

# pip install git+https://github.com/OpenBMB/VoxCPM.git
from huggingface_hub import snapshot_download
from voxcpm import VoxCPM
import soundfile as sf

model_dir = snapshot_download("LyngualLabs/VoxCPM2-Yoruba")
model = VoxCPM.from_pretrained(model_dir, load_denoiser=False)

# --- voice cloning: a reference clip + its exact transcript ---
wav = model.generate(
    text="Mo fẹ́ learn how to code, ṣùgbọ́n mi ò mọ programming language wo ló make sense.",
    prompt_wav_path="reference.wav",
    prompt_text="Ìròyìn ti sọ pé the government will ensure electricity tariff goes down ní January.",
    cfg_value=2.0,
    inference_timesteps=22,
)
sf.write("output.wav", wav, model.tts_model.sample_rate)

# --- or voice-design (no reference): prepend a voice description in parentheses ---
wav = model.generate(
    text="(A young Nigerian woman, clear voice) Ẹ kú àárọ̀, ẹ jọ̀ọ́ ẹ jẹ́ ká bẹ̀rẹ̀ ìpàdé.",
    cfg_value=2.0,
    inference_timesteps=22,
)
sf.write("voice_design.wav", wav, model.tts_model.sample_rate)

Tips: raise inference_timesteps (20–25) for smoother audio; cfg_value higher sticks closer to the reference.

Audio samples

Synthesized by this model (step 5000) — code-switched Yoruba–English, cloned from a single reference voice.

If rain falls tomorrow, jọ̀ọ́ rántí láti mú umbrella àti raincoat.

Ìròyìn ti sọ pé the government will ensure electricity tariff goes down ní January.

Ẹ̀gbọ́n mi tó ń ṣiṣẹ́ ní bank ti gba promotion, we're all so so happy.

Mo fẹ́ learn how to code, ṣùgbọ́n mi ò mọ programming language wo ló make sense.

Wọ́n ní ìpàdé ní hotel tó wà ní Victoria Island, kì í ṣe ní office wa.

Diverse voices

The same model can render different voices via voice-design (a text description, no reference clip):

WomanWọ́n ní ìpàdé ní hotel tó wà ní Victoria Island, kì í ṣe ní office wa.

Young manMo fẹ́ learn how to code, ṣùgbọ́n mi ò mọ programming language wo ló make sense.

EnergeticẸ̀gbọ́n mi tó ń ṣiṣẹ́ ní bank ti gba promotion, we're all so so happy.

Limitations

  • Experimental — not production quality; errors increase on long / number-heavy text.
  • Multi-speaker training — use a reference clip for a consistent voice.
  • Specialized to Yoruba — full FT trades the base's other-language ability for Yoruba.
  • Reflects the spontaneous + code-switched style of its training data.

Credits & license

Base: OpenBMB/VoxCPM2 (Apache-2.0) · Data: YECS (LyngualLabs), WAXAL (google/WaxalNLP) · Part of the WAXAL speech effort · Apache-2.0.

Downloads last month
129
Safetensors
Model size
2B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for LyngualLabs/VoxCPM2-Yoruba

Base model

openbmb/VoxCPM2
Finetuned
(19)
this model