Fine-tuning of Wav2Vec2-BERT 2.0 (580M parameters) for automatic speech recognition in Luhya, a Bantu language spoken in Kenya.
# Luhya ASR — Automatic Speech Recognition for the Luhya Language
---
## Table of Contents
- Overview
- Features
- Project Structure
- Installation
- Configuration
- Training
- Results
- Usage
- Metrics
- Contributing
- License
---
## Overview
This project implements an Automatic Speech Recognition (ASR) system for the Luhya language, built on Facebook's pre-trained Wav2Vec2-BERT 2.0 model.
The model was fine-tuned on 10 hours of audio data and achieves a Word Error Rate (WER) of 54.63% and a Character Error Rate (CER) of 12.67%.
### Key Results
| Metric | Result |
|--------|--------|
| WER | 54.63% |
| CER | 12.67% |
| Loss | 0.665 |
| Score | 66.35 |
| Training Time | 2h50 |
---
## Features
- Complete ASR model for the Luhya language
- Fine-tuning of Wav2Vec2-BERT 2.0 (580M parameters)
- Robust data pipeline with filtering and preprocessing
- Evaluation metrics: WER, CER, Score
- Automatic checkpointing and saving
- Colab support optimized for T4 GPU
- Modular, well-structured codebase
---
## Project Structure
```
luhya-asr_w2v-bert/
├── configs/
│ └── train_config_colab.yaml # Training configuration
├── scripts/
│ └── train_model.py # Main training script
├── src/
│ ├── data/
│ │ ├── preprocessing.py # Text cleaning
│ │ ├── dataset.py # Loading and filtering
│ │ └── dataset_encoders.py # Encoding for training
│ ├── models/
│ │ ├── factory.py # Model creation
│ │ └── hubert_with_adapter.py # Hubert with adapters
│ ├── training/
│ │ ├── collator.py # Dynamic padding
│ │ ├── metrics.py # WER, CER, Score
│ │ └── trainer.py # Trainer configuration
│ └── utils/
│ ├── config.py # Central configuration
│ └── cache.py # Dataset caching
├── notebooks/
│ └── training.ipynb # Training notebook
├── bash_scripts/
│ └── train.sh # Launch script
├── …