Downloads · 30 days
7
2% of all-time downloads
BantuLanguagesInitiative/bli-asr-0
bli-asr-0 is a automatic speech recognition model from BantuLanguagesInitiative. Use it when you need speech turned into text. It is set up for peft. The card lists the license as cc-by-sa-4.0.
<a target="blank" href="https://colab.research.google.com/fileId=https%3A//huggingface.co/BantuLanguagesInitiative/bli-asr-0/resolve/main/BLIASR0Inference.ipynb" <img src="https://colab.research.google.com/assets/cola…
Downloads · 30 days
7
2% of all-time downloads
All-time downloads
326
Public
Repo size
2.6 GB
Likes
1
Public
Click a slice to open those files.
.pt63.2 MB · 47%
From the Hugging Face model README
BLI ASR 0 is an automatic speech recognition model for Lingala developed by the Bantu Language Initiative.
The model is based on OpenAI Whisper large-v3 and adapted with LoRA for Lingala speech transcription. It is intended as an early research and community-oriented ASR model for under-resourced Bantu languages, starting with Lingala.
Project website and examples:
https://bantulanguageinitiative.com/en
A small cropped real-world Lingala audio benchmark is available here:
BantuLanguagesInitiative/lingala_real_eval_benchmark_croped
It contains short audio clips from several domains such as news, catechesis, comedy, cartoon and interview speech. The inference notebook loads this dataset directly, plays the selected audio sample, and transcribes it with BLI ASR 0.
openai/whisper-large-v3This model transcribes Lingala speech into text. It is not a translation model.
The model was trained on the Waxal Lingala ASR dataset.
The dataset was split into:
| Split | Approx. number of samples | Usage |
|---|---|---|
| Train | 14,400 | Model training |
| Validation | 1,844 | Validation during development |
| Test | 1,866 | Final held-out evaluation |
We applied a light normalization pipeline to the training and evaluation transcriptions.
The goal was not to impose a strict Lingala orthography, but to reduce noise and improve consistency. The post-processing included:
We intentionally avoided aggressive spelling correction because Lingala has substantial orthographic variation across speakers, regions, and data sources.
The model was fine-tuned from openai/whisper-large-v3 using LoRA.
Main training choices:
| Parameter | Value |
|---|---|
| Base model | openai/whisper-large-v3 |
| Fine-tuning method | LoRA |
| Task token | transcribe |
| Language token | Lingala |
| Precision | bf16 |
| Optimizer | AdamW |
| Evaluation strategy | small random validation subsets during training |
| Final evaluation | full validation/test split |
| Dataset | Waxal Lingala ASR |
We report CER rather than WER for this release.
| Metric | Value |
|---|---|
| CER normalized | 0.1703 |
We do not report WER in this first release because WER is not fully fair for the current Lingala ASR setting. Lingala does not yet have a single widely enforced normalized orthography in our data, and WER strongly penalizes spelling variants, segmentation differences, and silence-related insertions/deletions. We plan to release a corrected WER metric that better accounts for linguistic and contextual variation.
This model can be used for:
The model is especially useful as a first-pass transcription model before review by human annotators.
This is an early release and still has important limitations:
!pip install -U transformers peft accelerate soundfile librosa torchao
import torch
from transformers import WhisperProcessor, WhisperForConditionalGeneration
from peft import PeftModel
import librosa
base_model = "openai/whisper-large-v3"
adapter_model = "BantuLanguagesInitiative/bli-asr-0"
device = "cuda" if torch.cuda.is_available() else "cpu"
dtype = torch.bfloat16 if torch.cuda.is_available() else torch.float32
processor = WhisperProcessor.from_pretrained(
base_model,
language="lingala",
task="transcribe",
)
model = WhisperForConditionalGeneration.from_pretrained(
base_model,
torch_dtype=dtype,
)
model = PeftModel.from_pretrained(model, adapter_model)
model = model.merge_and_unload()
model.to(device)
model.eval()
audio_path = "example.mp3"
audio, sr = librosa.load(audio_path, sr=16000)
inputs = processor.feature_extractor(
audio,
sampling_rate=16000,
return_tensors="pt",
)
input_features = inputs.input_features.to(device=device, dtype=dtype)
forced_decoder_ids = processor.get_decoder_prompt_ids(
language="lingala",
task="transcribe",
)
with torch.no_grad():
generated_ids = model.generate(
input_features,
forced_decoder_ids=forced_decoder_ids,
max_new_tokens=225,
)
text = processor.tokenizer.batch_decode(
generated_ids,
skip_special_tokens=True,
)[0]
print(text)
BLI ASR 0 is released under CC-BY-SA-4.0.
This model is a LoRA/PEFT adaptation of openai/whisper-large-v3
for Lingala ASR.
The fine-tuning data used for this release comes from google/WaxalNLP,
specifically the Lingala ASR subset. The current WAXAL dataset card lists
Lingala under the Digital Umuganda ASR data, licensed as CC-BY-SA-4.0.
For this reason, the BLI ASR 0 adapter is distributed under CC-BY-SA-4.0.
No WAXAL audio files are redistributed in this model repository.
Users who need the original data should access it directly from
google/WaxalNLP and respect its dataset license and terms.
WAXAL: A Large-Scale Multilingual African Language Speech Corpus, Diack et al., 2026, arXiv:2602.02734.
Robust Speech Recognition via Large-Scale Weak Supervision, Radford et al., 2022, arXiv:2212.04356.