File size: 4,359 Bytes
9af1f0f | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 | ---
language: wo
license: apache-2.0
tags:
- automatic-speech-recognition
- audio
- wolof
- mms
- senegal
- africa
- low-resource
datasets:
- vonewman/wolof-audio-data
metrics:
- wer
base_model: facebook/mms-1b-all
model-index:
- name: mms-1b-wolof-finetuned
results:
- task:
type: automatic-speech-recognition
name: Automatic Speech Recognition
dataset:
name: vonewman/wolof-audio-data
type: vonewman/wolof-audio-data
metrics:
- type: wer
value: 29.56
name: Word Error Rate
---
# MMS-1B Wolof Fine-Tuned πΈπ³
Fine-tuned version of [facebook/mms-1b-all](https://huggingface.co/facebook/mms-1b-all) for **Wolof Automatic Speech Recognition (ASR)**.
This model transcribes Wolof speech audio into Wolof text. It's the result of full fine-tuning (all 964M parameters) on 20,000 quality-filtered audio samples.
## π Performance
| Metric | Value |
|--------|-------|
| **WER (Word Error Rate)** | **29.56%** |
| Test set | 500 examples |
| Training samples | 20,000 |
| Total audio | 25.6 hours |
| Mode | Full fine-tuning (964M params) |
## π― Use Cases
- ποΈ Transcription of Wolof audio (radio, podcasts, conversations)
- π First step in a Wolof β French translation pipeline
- βΏ Accessibility tools for Wolof-speaking communities
- π¬ Research on low-resource African languages
## π Quick Start
```python
from transformers import Wav2Vec2ForCTC, AutoProcessor
import torch
import torchaudio
# Load model and processor
model_id = "Sadou/mms-1b-wolof-finetuned"
processor = AutoProcessor.from_pretrained(model_id)
model = Wav2Vec2ForCTC.from_pretrained(model_id)
# Load audio (must be 16kHz, mono)
waveform, sr = torchaudio.load("your_audio.wav")
if sr != 16000:
waveform = torchaudio.transforms.Resample(sr, 16000)(waveform)
if waveform.shape[0] > 1:
waveform = waveform.mean(dim=0, keepdim=True)
# Transcribe
inputs = processor(waveform[0].numpy(), sampling_rate=16000, return_tensors="pt")
with torch.no_grad():
logits = model(**inputs).logits
predicted_ids = torch.argmax(logits, dim=-1)
transcription = processor.batch_decode(predicted_ids)[0]
print(f"Transcription: {transcription}")
```
## π Training Details
### Dataset
- **Source**: [vonewman/wolof-audio-data](https://huggingface.co/datasets/vonewman/wolof-audio-data)
- **Combines**: ALFFA + FLEURS + Urban Bus + Kallama
- **Quality filters applied**:
- Audio duration: 2-15s
- Text: 3-30 words
- Speech rate: 1.0-4.5 words/sec
- Retention rate: 75.5%
### Training Configuration
- **Base model**: `facebook/mms-1b-all`
- **Mode**: Full fine-tuning (all 964M parameters)
- **Precision**: bf16 (Brain Float 16)
- **Effective batch size**: 32 (16 Γ 2 gradient accumulation)
- **Gradient checkpointing**: Enabled
- **Learning rate**: 3e-5 (initial), then 5e-6 (final epochs)
- **Epochs**: 6 (4 + 2 with LR decay)
- **Hardware**: NVIDIA RTX PRO 6000 Blackwell
### Training Progression
| Step | WER | Phase |
|------|-----|-------|
| 300 | 47.67% | Initial training |
| 900 | 38.86% | |
| 1500 | 33.35% | |
| 2100 | 30.77% | |
| 2400 | 30.11% | Plateau detected |
| 2700 | 30.56% | LR decay started |
| 3300 | 29.56% | |
| 3600 | **29.56%** | Final β
|
## β οΈ Limitations
- **Code-switching**: Difficulty with French words mixed in Wolof speech
- **Word segmentation**: Sometimes merges or splits words incorrectly
- **Background noise**: Performance degrades on noisy audio
- **Long audios**: For audios > 30s, use chunking with stride
## π Long Audio Inference
For audios longer than 30 seconds, use HuggingFace pipeline with chunking:
```python
from transformers import pipeline
pipe = pipeline(
'automatic-speech-recognition',
model="Sadou/mms-1b-wolof-finetuned",
chunk_length_s=30,
stride_length_s=(4, 2),
device=0,
)
result = pipe("long_audio.wav")
print(result['text'])
```
## π Acknowledgments
- Meta AI for [MMS](https://huggingface.co/facebook/mms-1b-all)
- [vonewman](https://huggingface.co/vonewman) for the Wolof audio dataset
- [GalsenAI](https://huggingface.co/galsenai) and the Senegalese AI community
## π Citation
```bibtex
@misc{wolof-mms-2026,
author = {Sadou Barry},
title = {MMS-1B Wolof Fine-Tuned},
year = {2026},
publisher = {HuggingFace},
url = {https://huggingface.co/Sadou/mms-1b-wolof-finetuned}
}
```
|