Spaces:
Running
Running
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() | |