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}
}
```