ZoyaRabail commited on
Commit
67fcf46
·
verified ·
1 Parent(s): 0eb7e32

Create translation_app.py

Browse files
Files changed (1) hide show
  1. translation_app.py +56 -0
translation_app.py ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import gradio as gr
3
+ from langdetect import detect, LangDetectException
4
+ from transformers import M2M100ForConditionalGeneration, M2M100Tokenizer
5
+
6
+ try:
7
+ from groq import Groq
8
+ except Exception:
9
+ Groq = None
10
+
11
+ # Config
12
+ GROQ_API_KEY = os.getenv("GROQ_API_KEY")
13
+ GROQ_MODEL = os.getenv("GROQ_MODEL", "mixtral-8x7b-32768")
14
+
15
+ groq_client = None
16
+ if GROQ_API_KEY and Groq is not None:
17
+ try:
18
+ groq_client = Groq(api_key=GROQ_API_KEY)
19
+ except Exception:
20
+ pass
21
+
22
+ m2m_model_name = "facebook/m2m100_418M"
23
+ m2m_tokenizer = M2M100Tokenizer.from_pretrained(m2m_model_name)
24
+ m2m_model = M2M100ForConditionalGeneration.from_pretrained(m2m_model_name)
25
+
26
+ LANG_UI_TO_CODE = {"English": "en", "Spanish": "es", "French": "fr"}
27
+
28
+ def call_m2m(user_text, target_code):
29
+ try:
30
+ src_code = detect(user_text)
31
+ except LangDetectException:
32
+ src_code = "en"
33
+ if src_code == target_code:
34
+ return user_text
35
+ m2m_tokenizer.src_lang = src_code
36
+ encoded = m2m_tokenizer(user_text, return_tensors="pt")
37
+ generated = m2m_model.generate(**encoded, forced_bos_token_id=m2m_tokenizer.get_lang_id(target_code))
38
+ return m2m_tokenizer.decode(generated[0], skip_special_tokens=True)
39
+
40
+ def translate_text(user_text, target_lang_ui):
41
+ if not user_text.strip():
42
+ return "⚠️ Please enter text."
43
+ target_code = LANG_UI_TO_CODE.get(target_lang_ui, "en")
44
+ try:
45
+ return call_m2m(user_text, target_code)
46
+ except:
47
+ return "❌ Translation failed."
48
+
49
+ with gr.Blocks() as demo:
50
+ gr.Markdown("## 🌐 Universal Translator")
51
+ with gr.Row():
52
+ txt = gr.Textbox(label="Enter your text", lines=6)
53
+ tgt = gr.Dropdown(choices=["English", "Spanish", "French"], value="English", label="Target Language")
54
+ out = gr.Textbox(label="Translated Output", lines=6)
55
+ btn = gr.Button("Translate")
56
+ btn.click(fn=translate_text, inputs=[txt, tgt], outputs=[out])