# 🌍 Traducteur Français → Wolof
Système de traduction automatique neuronale du **français** vers le **wolof**, basé sur un modèle **MarianMT fine-tuné**, exposé via une **API FastAPI** et une **interface Streamlit**.
---
## 📁 Structure du projet
```
.
├── model.py # Classe TranslationModel (chargement & inférence)
├── api.py # API REST FastAPI
├── app.py # Interface utilisateur Streamlit
├── finetuned_fr_wolof/ # Répertoire du modèle fine-tuné (MarianMT)
├── traduction-fr-to-wolof.ipynb # notebook d'entrainement
├── requirements.txt # Liste des dépendances
├── evaluation_metrics.json # resulatats de l'evaluation
├── evaluation_resuls.csv # datasets avec les resultats de l'evaluation
├── eval.py # scirpt d'evaluation
└── README.md
```
---
## ⚙️ Prérequis
- Python **3.9+**
- GPU CUDA (optionnel, mais recommandé pour de meilleures performances)
- Le dossier `finetuned_fr_wolof/` contenant le modèle fine-tuné
### Installation des dépendances
```bash
pip install -r requirements.txt
```
---
## 🧠 Modèle (`model.py`)
La classe `TranslationModel` encapsule le chargement et l'inférence du modèle MarianMT.
### Paramètres
```
| Paramètre | Type | Défaut | Description |
|-----------|------|--------|-------------|
| `text` | `str` | — | Texte source en français |
| `num_beams` | `int` | `4` | Nombre de faisceaux (beam search) — plus élevé = meilleure qualité, plus lent |
```
### Comportement
- Détecte automatiquement le **GPU** (CUDA) ou repasse sur le **CPU**
- Charge le modèle et le tokenizer depuis `finetuned_fr_wolof/`
- Utilise `torch.no_grad()` pour l'inférence (optimisation mémoire)
- Longueur maximale de sortie : **128 tokens**
---
## 🚀 API FastAPI (`api.py`)
### Lancer le serveur
```bash
uvicorn api:app --reload
```
Le serveur démarre sur `
127.0.0.1`.
> Le modèle est chargé **une seule fois** au démarrage via le mécanisme `lifespan` de FastAPI.
### Endpoints
```
| Méthode | Route | Description |
|---------| …