# Fine-Tuning Whisper for Moroccan Darija Speech Recognition
This repository documents experiments with parameter-efficient fine-tuning methods for adapting OpenAI's Whisper model to Moroccan Darija. The work compares LoRA and AdaLoRA approaches against baseline performance.
## Background
Moroccan Darija presents unique challenges for automatic speech recognition. Unlike Modern Standard Arabic, which dominates training datasets for Arabic ASR systems, Darija incorporates distinct phonological features, code-switching patterns, and regional variations. This project investigates whether parameter-efficient fine-tuning can effectively adapt pre-trained models to this low-resource dialect.
## Dataset
**Source:** Darija Open Dataset v2.0 (Zenodo)
The dataset contains spontaneous Moroccan Darija speech across multiple speakers and contexts.
**Split configuration:**
- Training: 2,000 samples (LoRA-Tiny) / 6,239 samples (AdaLoRA-Small)
- Validation: 200 samples (LoRA-Tiny) / 836 samples (AdaLoRA-Small)
- Test: 600 samples (evaluation)
**Specifications:**
- Sample rate: 16kHz
- Format: WAV
- Annotations: Word-level transcriptions
## Methodology
### Experiment 1: LoRA Fine-Tuning (Whisper-Tiny)
**Base model:** openai/whisper-tiny (39M parameters)
**Configuration:**
```python
lora_config = {
"r": 32,
"lora_alpha": 64,
"target_modules": ["q_proj", "v_proj"],
"lora_dropout": 0.05
}
```
**Training parameters:**
- Trainable parameters: 589,824 (1.54% of total)
- Training samples: 2,000
- Steps: 500
- Learning rate: 1e-3
- Batch size: 8 (gradient accumulation enabled)
- Hardware: NVIDIA A100 40GB
### Experiment 2: AdaLoRA Fine-Tuning (Whisper-Small)
**Base model:** openai/whisper-small (244M parameters)
**Configuration:**
```python
adalora_config = {
"r": 32,
"lora_alpha": 32,
"target_modules": ["q_proj", "v_proj"],
"target_r": 16,
"orth_reg_weight": 0.1
}
```
**Training parameters:**
- Trainable parameters: 1,327,968 (0.55% of total)
- Training samples: 6,239
- St …