File size: 3,321 Bytes
04bace6
52c2287
 
 
 
04bace6
 
 
 
 
52c2287
04bace6
52c2287
04bace6
52c2287
 
 
 
 
 
 
 
 
 
 
4b8348c
52c2287
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
---
title: CodeAlpha Language Translator
emoji: 🌐
colorFrom: blue
colorTo: purple
sdk: docker
app_port: 8501
pinned: false
---

# 🌐 CodeAlpha_LanguageTranslator

Outil de traduction de texte réalisé dans le cadre du stage **Artificial Intelligence @ CodeAlpha** — Task 1.

## 🧠 Approche technique

Contrairement à une simple intégration d'API de traduction (Google Translate API, Microsoft Translator), ce projet
utilise un **véritable modèle de deep learning chargé et exécuté localement** via la librairie Hugging Face
`transformers` :

- **Modèle :** [`facebook/nllb-200-distilled-600M`](https://huggingface.co/facebook/nllb-200-distilled-600M)
  (Meta AI — *No Language Left Behind*)
- **Architecture :** Transformer Seq2Seq (encoder-decoder), pré-entraîné
- **Particularité :** un seul modèle gère la traduction entre **~200 langues**, contrairement aux modèles
  Helsinki-NLP/opus-mt qui nécessitent un modèle différent par paire de langues
- **Inférence :** chargement direct via `AutoTokenizer` + `AutoModelForSeq2SeqLM`, puis génération avec `model.generate(...)`, en local, sans dépendre d'une API tierce payante

Ce choix technique est plus proche de l'esprit "AI model development" du stage, car il implique le chargement,
la manipulation et l'inférence d'un vrai modèle de NLP, plutôt qu'un simple appel HTTP à un service externe.

## 🚀 Fonctionnalités

- Interface utilisateur simple (Streamlit) pour saisir du texte
- Sélection de la langue source (avec option de **détection automatique** via `langdetect`) et de la langue cible
  (14 langues)
- Traduction via un modèle NLLB-200 chargé localement (`transformers`)
- Affichage clair du texte traduit
- 🔊 Bonus : synthèse vocale (text-to-speech) de la traduction via `gTTS`
- 📋 Bonus : bouton pour copier le texte traduit

## 🛠️ Installation

```bash
git clone https://github.com/<ton-username>/CodeAlpha_LanguageTranslator.git
cd CodeAlpha_LanguageTranslator
pip install -r requirements.txt
```

> ⚠️ Le premier lancement télécharge le modèle NLLB-200 (~2.4 Go) depuis Hugging Face. Une connexion internet
> est nécessaire uniquement lors de ce premier téléchargement — les lancements suivants utilisent le modèle
> mis en cache localement.

## ▶️ Lancer l'application

```bash
streamlit run app.py
```

L'application s'ouvre automatiquement dans le navigateur à l'adresse `http://localhost:8501`.

## 📦 Technologies utilisées

- [Streamlit](https://streamlit.io/) — interface utilisateur web
- [Hugging Face Transformers](https://huggingface.co/docs/transformers) — chargement et inférence du modèle NLLB-200
- [PyTorch](https://pytorch.org/) — backend de calcul pour le modèle
- [gTTS](https://github.com/pndurang/gTTS) — synthèse vocale (Google Text-to-Speech)
- [langdetect](https://github.com/Mimino666/langdetect) — détection automatique de la langue source

## 📸 Utilisation

1. L'utilisateur entre un texte
2. Il choisit la langue source (ou laisse la détection automatique) et la langue cible
3. Il clique sur "Traduire" — le modèle NLLB-200 effectue l'inférence localement
4. Le texte traduit s'affiche, avec options d'écoute et de copie

## 🎓 Stage

Projet réalisé dans le cadre du **CodeAlpha Artificial Intelligence Internship**.