You need to agree to share your Hugging Face information to access this model

This repository is publicly accessible, but you have to accept the conditions to access its files and content.

Log in or Sign Up to review the conditions and access this model content.

omniASR-LLM-7B, fine-tuned for Kinyarwanda

A full fine-tune of facebook/omniASR-LLM-7B (revision 4b0bada; the v1 release, omniASR_LLM_7B). It was trained on 4,449 hours of Kinyarwanda speech from Afrivoice and Common Voice 22.0. On the held-out test split of 26,251 clips (84.0 hours), word error rate falls from 17.0 % for the base model to 11.9 %, and character error rate from 5.0 % to 3.9 %.

Results

Error rates are scored on normalised text: lower case, with punctuation removed and word-internal apostrophes kept (n'abagabo). The model was trained to output text in that form. Decoding is beam search with a beam of 1, as in the omnilingual-asr inference pipeline.

Test set Clips Hours WER, base WER, fine-tuned CER, base CER, fine-tuned
All test clips 26,251 84.0 17.0 % 11.9 % 5.0 % 3.9 %
Afrivoice 10,075 59.6 15.2 % 9.1 % 4.4 % 3.2 %
Common Voice 16,176 24.4 21.5 % 18.6 % 6.4 % 5.8 %
Afrivoice domain Clips WER, fine-tuned CER, fine-tuned
agriculture 2,109 6.3 % 1.4 %
education 1,812 4.3 % 0.9 %
financial 2,304 14.1 % 5.6 %
government 2,281 12.7 % 5.3 %
health 1,569 5.1 % 1.2 %

Three models were fine-tuned on the same data with the same recipe:

Training data

The train, dev and test splits merge the corresponding splits of two corpora:

  • Afrivoice Kinyarwanda (DigitalUmuganda/Afrivoice_Kinyarwanda, revision 042a5a9; Digital Umuganda, CC BY 4.0). Unscripted descriptions of photographs in five domains (agriculture, education, financial, government and health), plus scripted education readings that appear in train only.
  • Common Voice 22.0, Kinyarwanda (fsicoli/common_voice_22_0, revision ae911de, a mirror of Mozilla Common Voice; CC0 1.0). Crowd-sourced readings of prompted sentences.
Split Clips Hours Afrivoice clips Common Voice clips
Train 1,549,635 4,449.0 548,538 1,001,097
Dev 21,340 53.8 5,376 15,964
Test 26,251 84.0 10,075 16,176

Every recording was decoded, converted to 16 kHz mono and checked. Silent recordings and recordings with impossibly fast transcripts were dropped, and duplicate recordings were removed so that none appears in two splits. Training also left out the 90 train clips longer than 40 seconds. No speaker appears in more than one split. However, 1,268 test clips share their normalised transcript with a train clip, and they were kept. In Common Voice these are case and punctuation variants of a train sentence; in Afrivoice they are descriptions repeated word for word by different speakers.

Training

  • Regime. All parameters were trained except the convolutional feature extractor, which stayed frozen (7,796,880,512 trainable of 7,801,090,688). The objective was next-character cross-entropy, conditioned on the language code kin_Latn.
  • Optimisation. 8-bit AdamW at a peak learning rate of 1e-5, with betas (0.9, 0.98), weight decay 0.01 and gradient-norm clipping at 1.0. Warm-up was linear over 250 updates, followed by cosine decay to a tenth of the peak. Each update covered about an hour of audio.
  • Budget and selection. Training ran for one epoch (4,556 updates). WER was checked every 250 updates on a fixed 2,000-clip dev sample, and the best checkpoint was kept: update 4,500, with a dev-sample WER of 11.5 %. Dev WER was still falling slightly at the end of the epoch.
  • Hardware. One NVIDIA H200, with FP32 weights and bfloat16 autocast, for 45.2 hours.

training_config.json, training_history.csv and metrics.json in this repository record the full configuration, the dev curve and every test metric.

Files

omniASR-LLM-7B.pt (fairseq2 checkpoint, FP32, 31.2 GB) and omniASR_tokenizer_v7.model, the base model's tokeniser.

Usage

The checkpoint keeps the base model's fairseq2 format and loads with omnilingual-asr (tested with 0.2.0 and fairseq2 0.6). Pass the language code kin_Latn, as in training.

from pathlib import Path

import torch
from fairseq2 import init_fairseq2
from fairseq2.data.tokenizers.char import load_char_tokenizer
from huggingface_hub import snapshot_download
from omnilingual_asr.models.inference.pipeline import ASRInferencePipeline
from omnilingual_asr.models.wav2vec2_llama import get_wav2vec2_llama_model_hub

init_fairseq2()
folder = Path(snapshot_download("andreiflorian/omniASR-LLM-7B-kinyarwanda"))
hub = get_wav2vec2_llama_model_hub()
model = hub.load_custom_model(folder / "omniASR-LLM-7B.pt", hub.get_model_config("omniASR_LLM_7B"),
                              device=torch.device("cuda"), dtype=torch.bfloat16)
tokenizer = load_char_tokenizer(folder / "omniASR_tokenizer_v7.model", None)

pipeline = ASRInferencePipeline(None, model=model, tokenizer=tokenizer)
print(pipeline.transcribe(["clip.flac"], lang=["kin_Latn"]))

As with the base model, clips must be shorter than 40 seconds.

Licence and attribution

This model is released under Apache 2.0. It was trained on Afrivoice Kinyarwanda by Digital Umuganda (CC BY 4.0), which requires attribution, and on Mozilla Common Voice 22.0 (CC0 1.0). The base model is described in Omnilingual ASR Team (2025), Omnilingual ASR: Open-Source Multilingual Speech Recognition for 1600+ Languages.

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 Lugha-Models/omniASR-LLM-7B-kinyarwanda

Finetuned
(3)
this model

Datasets used to train Lugha-Models/omniASR-LLM-7B-kinyarwanda