File size: 1,472 Bytes
68271ac
 
 
831f548
 
 
 
 
 
 
68271ac
831f548
 
 
68271ac
 
 
 
831f548
68271ac
 
831f548
68271ac
 
 
 
831f548
 
 
 
 
68271ac
831f548
68271ac
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
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM, pipeline
import gradio as gr

# Load models
en_ur_model_name = "Helsinki-NLP/opus-mt-en-ur"
ur_en_model_name = "Helsinki-NLP/opus-mt-ur-en"

en_ur_tokenizer = AutoTokenizer.from_pretrained(en_ur_model_name)
en_ur_model = AutoModelForSeq2SeqLM.from_pretrained(en_ur_model_name)
translator_en_ur = pipeline("translation", model=en_ur_model, tokenizer=en_ur_tokenizer)

ur_en_tokenizer = AutoTokenizer.from_pretrained(ur_en_model_name)
ur_en_model = AutoModelForSeq2SeqLM.from_pretrained(ur_en_model_name)
translator_ur_en = pipeline("translation", model=ur_en_model, tokenizer=ur_en_tokenizer)

def translate_text(text):
    contains_urdu = any('\u0600' <= ch <= '\u06FF' for ch in text)
    if contains_urdu:
        result = translator_ur_en(text, max_length=100)
        direction = "Urdu β†’ English"
    else:
        result = translator_en_ur(text, max_length=100)
        direction = "English β†’ Urdu"
    return f"πŸ” Translation ({direction}):\n\n" + result[0]['translation_text']

with gr.Blocks() as demo:
    gr.Markdown("## 🌐 English ↔ Urdu Translator using Hugging Face")
    input_text = gr.Textbox(label="Enter Text (English or Urdu)", placeholder="Type here...")
    output_text = gr.Textbox(label="Translation Output", interactive=False)
    translate_button = gr.Button("Translate")
    translate_button.click(fn=translate_text, inputs=input_text, outputs=output_text)

demo.launch()