Spaces:
Running
Running
import streamlit as st | |
from transformers import MarianMTModel, MarianTokenizer | |
st.set_page_config(page_title="English β Urdu Translator", layout="centered") | |
st.title("π English β Ψ§Ψ±Ψ―Ω Translator") | |
# Language options | |
direction = st.selectbox("Select Translation Direction", ["English to Urdu", "Urdu to English"]) | |
# Input text | |
text = st.text_area("Enter Text") | |
# Load models and tokenizers only once using caching | |
def load_model_and_tokenizer(src_lang): | |
if src_lang == "en": | |
model_name = "Helsinki-NLP/opus-mt-en-ur" | |
else: | |
model_name = "Helsinki-NLP/opus-mt-ur-en" | |
tokenizer = MarianTokenizer.from_pretrained(model_name) | |
model = MarianMTModel.from_pretrained(model_name) | |
return tokenizer, model | |
# Translate | |
if st.button("Translate"): | |
if not text.strip(): | |
st.warning("Please enter some text.") | |
else: | |
src_lang = "en" if direction == "English to Urdu" else "ur" | |
tokenizer, model = load_model_and_tokenizer(src_lang) | |
inputs = tokenizer(text, return_tensors="pt", truncation=True, padding=True) | |
translated = model.generate(**inputs) | |
result = tokenizer.decode(translated[0], skip_special_tokens=True) | |
st.success("Translation:") | |
st.write(result) | |