File size: 4,968 Bytes
298c90b
5a62b91
298c90b
5a62b91
298c90b
5a62b91
298c90b
5a62b91
298c90b
5a62b91
 
298c90b
5a62b91
 
 
 
 
298c90b
5a62b91
298c90b
5a62b91
298c90b
5a62b91
298c90b
5a62b91
 
 
298c90b
5a62b91
298c90b
5a62b91
298c90b
5a62b91
298c90b
5a62b91
298c90b
5a62b91
 
 
 
298c90b
5a62b91
298c90b
5a62b91
 
 
 
 
298c90b
5a62b91
298c90b
5a62b91
298c90b
 
5a62b91
298c90b
5a62b91
 
 
298c90b
5a62b91
298c90b
5a62b91
298c90b
 
5a62b91
298c90b
5a62b91
 
 
298c90b
5a62b91
298c90b
5a62b91
298c90b
 
 
 
 
5a62b91
298c90b
5a62b91
 
 
298c90b
5a62b91
298c90b
5a62b91
298c90b
 
 
 
 
 
5a62b91
298c90b
5a62b91
 
 
298c90b
5a62b91
298c90b
5a62b91
298c90b
 
 
5a62b91
 
298c90b
 
 
 
 
 
 
 
 
 
 
5a62b91
 
 
298c90b
5a62b91
 
298c90b
5a62b91
 
 
 
298c90b
5a62b91
298c90b
5a62b91
298c90b
5a62b91
 
 
 
 
 
298c90b
5a62b91
298c90b
5a62b91
298c90b
5a62b91
 
 
 
 
298c90b
5a62b91
 
 
 
298c90b
5a62b91
 
 
298c90b
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162

# πŸ“– Detailed Code Explanation: Multi-Language Translator

This document explains the **Multi-Language Translator**, detailing each component and step of the provided Python code.

---

## πŸ“ Overview

**Purpose**  
Translate English text into multiple languages dynamically selected by users.

**Tech Stack**  
- **Translation Model**: Hugging Face Transformers (`Meta's NLLB-200`)
- **Language Codes**: FLORES-200 dataset
- **User Interface**: Gradio Blocks interface
- **Data Handling**: JSON file for language codes

---

## βš™οΈ Setup & Dependencies

Install necessary libraries:

```
pip install transformers gradio torch
```

Ensure you have the `language.json` file (FLORES-200 codes) in your project directory.

---

## πŸ” Detailed Block-by-Block Code Explanation

### 1. Imports

```
import torch
import gradio as gr
import json
from transformers import pipeline
```

**Detailed Explanation:**  
- `torch`: Essential for model computations and optimizations.
- `gradio`: Creates simple yet powerful web-based user interfaces.
- `json`: Reads and processes language codes from JSON files.
- `pipeline`: Loads NLP models for tasks like translation easily.

### 2. Load Translation Model

```
text_translator = pipeline("translation", model="facebook/nllb-200-distilled-600M",
                           torch_dtype=torch.bfloat16)
```

**Detailed Explanation:**  
- Loads the `NLLB-200` translation model capable of translating between 200+ languages.
- Optionally optimizes performance via `torch_dtype=torch.bfloat16` if supported.

### 3. Load Language Codes from JSON

```
with open('language.json', 'r') as file:
    language_data = json.load(file)
```

**Detailed Explanation:**  
- Reads language names and their corresponding FLORES-200 codes from `language.json`.
- Prepares the app to support a dynamic range of languages.

### 4. Helper Function to Retrieve FLORES Codes

```
def get_FLORES_code_from_language(language):
    for entry in language_data:
        if entry['Language'].lower() == language.lower():
            return entry['FLORES-200 code']
    return None
```

**Detailed Explanation:**  
- Matches selected language to its FLORES-200 code.
- Returns the correct code for translation or provides an error if not found.

### 5. Translation Function

```
def translate_text(text, destination_language):
    dest_code = get_FLORES_code_from_language(destination_language)
    if not dest_code:
        return f"❌ Language code for '{destination_language}' not found."
    translation = text_translator(text, src_lang="eng_Latn", tgt_lang=dest_code)
    return translation[0]["translation_text"]
```

**Detailed Explanation:**  
- Translates provided English text into the user-selected language.
- Gracefully handles missing language codes.

### 6. Gradio Interface

```
language_list = [entry["Language"] for entry in language_data]

with gr.Blocks(theme=gr.themes.Default()) as demo:
    gr.Markdown("# 🌐 Multilingual Translator β€” Powered by Meta NLLB-200")
    gr.Markdown("Translate English text into 200+ languages.")

    with gr.Row():
        input_text = gr.Textbox(label="πŸ“ English Input", lines=6, placeholder="Type your English sentence here...")
        output_lang = gr.Dropdown(choices=language_list, label="🌍 Target Language")

    output_text = gr.Textbox(label="βœ… Translated Output", lines=4)

    translate_btn = gr.Button("πŸ”„ Translate")

    translate_btn.click(fn=translate_text, inputs=[input_text, output_lang], outputs=output_text)

    gr.Markdown("---")
    gr.Markdown("🧠 Model: `facebook/nllb-200-distilled-600M`  
🌐 Language codes from [FLORES-200](https://github.com/facebookresearch/flores)")

demo.launch()
```

**Detailed Explanation:**  
- User-friendly interface to input English text and select target language.
- Interactive, real-time translation upon button click.
- Displays the translated text clearly.

---

## πŸš€ Core Concepts

| Concept                        | Importance                                     |
|--------------------------------|------------------------------------------------|
| **NLLB-200 Translation Model** | Provides accurate multilingual translations    |
| **FLORES-200 Dataset**         | Ensures accurate language-code mapping         |
| **Gradio Interface**           | Quick creation of user-friendly web interfaces |
| **Dynamic JSON Data Loading**  | Easily updates supported languages             |

---

## πŸ”„ Alternative Models & Possible Enhancements

- **Alternate Translation Models**:
```
pipeline("translation", model="Helsinki-NLP/opus-mt-en-de")  # Example: English-German translation
pipeline("translation", model="t5-base")
```

- **Additional UI Features**:
  - Speech-to-text for input.
  - Audio playback for translated text.
  - Option to download translated text.

- **Performance Improvements**:
  - GPU support for faster translations.
  - Offline caching of translations for commonly translated phrases.