# Moroccan Darija Speech Synthesis with DiffWave
This repository contains the work done for the **GenAI** project on speech synthesis for **Moroccan Darija** using the **DiffWave** diffusion model and the **DODa** dataset.
The project covers a complete pipeline:
1. Audio data preprocessing
2. Training a DiffWave model **from scratch**
3. Fine-tuning a DiffWave model pre-trained on LJSpeech
4. Audio generation
5. Evaluation and comparison of the two approaches
Originally developed on **Google Colab** for GPU access, the project has been refactored into **standalone Python scripts** that run fully locally.
---
## Repository Structure
```
.
├── configs/
│ ├── default.yaml # all hyperparameters (single source of truth)
│ ├── train_scratch.yaml # overrides for from-scratch training
│ └── train_finetune.yaml # overrides for fine-tuning
│
├── src/
│ ├── config.py # YAML + argparse config loader
│ ├── dataset.py # DiffWaveDODaDataset + DataLoader factories
│ ├── diffusion.py # DiffusionSchedule (add_noise / p_sample / generate)
│ ├── losses.py # multi-resolution STFT loss
│ ├── trainer.py # training loop, validation, checkpointing
│ └── plotting.py # loss curves, waveform & mel comparisons
│
├── scripts/
│ ├── preprocess.py # download DODa, preprocess, save wavs + mels + CSVs
│ ├── train.py # train from scratch or fine-tune
│ ├── generate.py # generate audio from a saved checkpoint
│ └── evaluate.py # compare multiple runs
│
├── notebooks/ # original Colab notebooks (kept as reference)
│ ├── 01_preprocessing_doda.ipynb
│ ├── 02_diffwave_from_scratch_training_generation.ipynb
│ ├── 03_diffwave_training_fine_tuned_10k.ipynb
│ └── 04_evaluation_resultas.ipynb
│
├── D …