# Tunisian Arabic Whisper Large-v3 LoRA Fine-tuning
Production-ready fine-tuning pipeline for Tunisian Arabic ASR with OpenAI Whisper Large-v3, Hugging Face Transformers, Datasets, Evaluate, and PEFT LoRA.
## Installation
```bash
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
```
On Linux/macOS, activate with `source venv/bin/activate`. Install a CUDA-compatible PyTorch build if your environment needs a specific CUDA version.
## Dataset Structure
Training expects parquet shards under the path configured in `configs/train.yaml`, defaulting to:
```text
/data/augmented_data/
data-00000.parquet
data-00001.parquet
...
```
Nested parquet files are also discovered recursively. Each row must contain:
```text
audio_id: string
audio: { bytes: binary WAV, sampling_rate: int64 }
transcript: string
segments: list[...] # ignored during training
source: string
duration: float
```
The `transcript` column is used as the target text. The `segments` column is removed during preprocessing.
## Configuration
All training, dataset, model, LoRA, generation, and output settings live in `configs/train.yaml`.
Important fields:
- `dataset.path`: parquet directory, default `/data/augmented_data`
- `dataset.train_test_split`: test ratio, default `0.1`
- `dataset.seed`: reproducible shuffle and split seed
- `training.fp16` / `training.bf16`: choose one mixed precision mode
- `lora.target_modules`: default `q_proj` and `v_proj`
- `output.save_merged_model`: optionally save a merged full model
## Training
```bash
python src/train.py --config configs/train.yaml
```
The script logs dataset size, train/test size, average and maximum duration, GPU information, LoRA parameter counts, final metrics, and total training time.
Outputs are written under `outputs/whisper-large-v3-tunisian-arabic-lora` by default:
```text
adapter_config.json
adapter_model.safetensors
tokenizer files
preprocessor_config.json
generation_config.json
training_args.json
metrics.js …