Murivo-TTS 21M Yorùbá (48 kHz Flow-Matching DiT)
Lightweight Text-to-Speech Engine for Yorùbá
Murivo-TTS is an ultra-lightweight, 100% offline text-to-speech engine. It combines a ~20.9M parameter Flow-Matching Diffusion Transformer (DiT) acoustic backbone with the VoxCPM2 48 kHz Causal AudioVAE neural vocoder to synthesize 48,000 Hz audio natively.
- Model File:
murivo_21m_yo.pt(~41.9 MB, FP16) - Sampling Rate: 48,000 Hz (VoxCPM2 AudioVAE)
- Architecture: Flow-Matching Diffusion Transformer (Euler ODE Solver)
- Language: Yorùbá (Southwestern Nigeria)
- Checkpoint Status: Stage 2 Conversational (Step 1,800)
🔬 Training Pipeline & Alignment Methodology
Murivo-TTS Yorùbá was trained across two stages using the lightweight Rápido DiT flow-matching architecture:
- Alignment Targets: Character-level duration targets were extracted using Meta's MMS forced aligner (
facebook/mms-1b-all) to map tones, sub-dots, and orthography to acoustic frames. - Stage 1 (Foundation): Trained on OpenBible Yorùbá narration. Early warmup froze the DiT backbone to anchor text alignment and duration modeling before unfreezing for joint training.
- Stage 2 (Conversational): Fine-tuned on Nigerian Common Voice (Yorùbá). The DiT backbone was kept frozen to prevent microphone noise and room acoustics from degrading voice quality, updating only the duration predictor and text encoder for natural conversational pacing.
🎧 Audio Showcase & Evaluation
Listen to native 48 kHz master synthesis samples generated directly by this checkpoint:
| Sample | Audio Player | Transcript & English Translation |
|---|---|---|
| Sample 1 | Native: Ọjọ́ kọ̀ọ̀kan ń fún wa ní àǹfààní tuntun láti kọ́ ohun tuntun àti láti túbọ̀ dára sí i nínú ohun tí a ń ṣe. English: "Every day gives us another opportunity to learn something new and become better at what we do." Note: Tests continuous aspect marker 'ń', tone glide in 'àǹfààní', open vowels 'ọ' & 'ẹ'. |
|
| Sample 2 | Native: Ẹ̀kọ́ ń ṣí ilẹ̀kùn sí àwọn àǹfààní tuntun, ó sì ń ran àwọn ènìyàn lọ́wọ́ láti kọ́ ọjọ́ ọ̀la tó dára. English: "Education opens doors to new opportunities and helps people build a better future." Note: Tests complex tone combinations (Ẹ̀kọ́, ilẹ̀kùn) and subdots. |
|
| Sample 3 | Native: Nígbà tí àwọn ènìyàn bá ṣiṣẹ́ pọ̀ tí wọ́n sì pín ìmọ̀ wọn, wọ́n lè ṣe àwọn ohun ńlá. English: "When people work together and share their knowledge, they can achieve great things." Note: Tests subordinate clause connection and tone harmony. |
📊 Training Curriculum & Progression
- Dataset: multilingual-tts/open-bible & benjaminogbonna/nigerian_common_voice_dataset
- Curriculum Summary: Multi-stage curriculum: Stage 1 established a soundproof studio baseline over 5,000 steps using OpenBible Yoruba. Stage 2 applied 1,800 steps of conversational adaptation on Nigerian Common Voice, unlocking natural prosody and colloquial cadence.
Convergence & Loss Progression
| Training Stage | Steps | Dataset | Focus | Final Loss |
|---|---|---|---|---|
| Stage 1 (Studio) | 5,000 | OpenBible Yorùbá | Tonal registers & phonology | 0.9328 (Flow: 0.8912) |
| Stage 2 (Conversational) | 1,800 | Common Voice Yorùbá | Colloquial prosody & cadence | Duration: 0.1881 |
⚡ Quickstart Guide
1. Requirements
Install the minimal dependencies (standard Python, no C-libraries or system espeak-ng required):
pip install torch soundfile numpy
2. Command-Line Inference (CLI)
Download this repository or infer.py and run:
python infer.py --lang yorùbá --text "Ọjọ́ kọ̀ọ̀kan ń fún wa ní àǹfààní tuntun láti kọ́ ohun tuntun àti láti túbọ̀ dára sí i nínú ohun tí a ń ṣe." --out output_yorùbá.wav
3. Python API
from infer import MurivoTTS
# Initialize engine (automatically manages model and vocoder)
tts = MurivoTTS(lang="yorùbá", device="cuda") # or device="cpu"
# Synthesize 48 kHz audio waveform
waveform = tts.synthesize(
text="Ọjọ́ kọ̀ọ̀kan ń fún wa ní àǹfààní tuntun láti kọ́ ohun tuntun àti láti túbọ̀ dára sí i nínú ohun tí a ń ṣe.",
guidance=1.8,
speed=1.0,
steps=20
)
# Save to disk
tts.save_wav(waveform, "output.wav", sample_rate=48000)
Note on Vocoder: The engine decodes speech using the VoxCPM2 48 kHz causal AudioVAE. On first run,
infer.pywill automatically cacheaudiovae.pthfrom Hugging Face (openbmb/VoxCPM2) if it is not already in your directory.
📜 Attributions & Acknowledgments
- Trained & Created by: Samuel Olubukun
- Acoustic Architecture Lineage: Special thanks to Anurag Kanade and the creators of Rápido TTS for their pioneering lightweight DiT flow-matching speech synthesis architecture. Check out Rápido TTS on Hugging Face and GitHub.
- Neural Vocoder: Built upon the 48 kHz causal VoxCPM2 AudioVAE developed by the OpenBMB Team.
- Dataset Communities:
- Special thanks to the OpenBible Multilingual TTS initiative.
- Special thanks to Benjamin Ogbonna's Nigerian Common Voice dataset .
📖 Citations
Citing Murivo-TTS
If you use Murivo-TTS in your research or applications, please cite:
@misc{murivo2026,
title = {Murivo-TTS: High-Fidelity 48 kHz Flow-Matching Text-to-Speech for English, Yorùbá, Hausa & Igbo},
author = {Olubukun, Samuel},
year = {2026},
howpublished = {\url{https://huggingface.co/samuelolubukun/murivo-tts-21m-yoruba}}
}
Architectural Lineage (Rápido TTS)
Murivo's acoustic backbone builds upon the open-source Rápido DiT architecture by Anurag Kanade:
@misc{rapido2026,
title = {Rápido: Tiny, Fast Brazilian Portuguese Text-to-Speech},
author = {Kanade, Anurag},
year = {2026},
howpublished = {\url{https://github.com/anurag12-webster/rapido-tts}}
}
📄 License
This model and its accompanying code are released under the Apache 2.0 License.