# Yoruba ASR — Qwen2-Audio-7B Fine-tuning
Fine-tuning of Qwen2-Audio-7B-Instruct on Nigerian speech data from the NaijaSpeech / AfricanVoices corpus using LoRA (Low-Rank Adaptation).
## Project Structure
```
yoruba-qwen2-audio/
├── src/
│ ├── dataset.py # AudioDataset class
│ ├── collator.py # AudioDataCollator class
│ └── utils.py # Audio loading helper
├── scripts/
│ ├── preprocess.py # Data extraction and split generation
│ └── train_asr.py # LoRA fine-tuning script
├── notebooks/
│ └── merge_and_push.ipynb # Merge LoRA weights and push to Hugging Face Hub
├── configs/
│ └── train_asr.yaml # Training hyperparameters
├── data/
│ └── README.md # How to obtain and preprocess the data
└── outputs/ # Checkpoints and logs (gitignored)
```
## Setup
```bash
pip install -r requirements.txt
```
## Data
See data/README.md for how to obtain the dataset and generate the splits.
## Training
```bash
python scripts/train_asr.py --config configs/train_asr.yaml
```
To change hyperparameters or data paths, edit `configs/train_asr.yaml` — no need to touch the training script.
## Merging and Pushing to Hugging Face Hub
After training, open `notebooks/merge_and_push.ipynb` to:
1. Merge the LoRA adapter weights into the base model
2. Save the Merged model
2. Push the merged model to the Hugging Face Hub
## Model
- **Base model:** Qwen2-Audio-7B-Instruct
- **Method:** LoRA fine-tuning (r=32, alpha=64, RSLoRA)
- **Task:** Automatic Speech Recognition (ASR)
- **Data:** NaijaSpeech / AfricanVoices corpus
- **Precision:** bfloat16
## Results
| Metric | Score |
|--------|-------|
| WER | 44.4% |