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