syedwaqarumer's picture
Create app.py
24458a9 verified
import streamlit as st
from transformers import MarianMTModel, MarianTokenizer
# Define a dictionary with language codes (MarianMT uses ISO 639-1 codes)
lang_dict = {
'English': 'en',
'French': 'fr',
'German': 'de',
'Spanish': 'es',
'Italian': 'it',
'Russian': 'ru',
'Chinese': 'zh',
'Arabic': 'ar',
'Japanese': 'ja',
'Korean': 'ko',
'Urdu': 'ur',
'Hindi': 'hi'
}
# Function to load model and tokenizer for translation
def load_model(src_lang, tgt_lang):
model_name = f'Helsinki-NLP/opus-mt-{src_lang}-{tgt_lang}'
tokenizer = MarianTokenizer.from_pretrained(model_name)
model = MarianMTModel.from_pretrained(model_name)
return model, tokenizer
# Function to translate text
def translate_text(model, tokenizer, text):
inputs = tokenizer(text, return_tensors="pt", padding=True)
translated = model.generate(**inputs)
translated_text = tokenizer.decode(translated[0], skip_special_tokens=True)
return translated_text
# Streamlit App
st.title('Language Translator')
# User selects input and output languages
st.subheader('Select Input and Output Languages')
src_lang = st.selectbox('Input Language', list(lang_dict.keys()))
tgt_lang = st.selectbox('Output Language', list(lang_dict.keys()))
# Get input text from the user
st.subheader(f'Translate from {src_lang} to {tgt_lang}')
input_text = st.text_area('Enter your text here', placeholder=f'Enter text in {src_lang}...')
# Translate button
if st.button('Translate'):
if input_text.strip() == "":
st.warning('Please enter some text to translate.')
else:
# Load the translation model
model, tokenizer = load_model(lang_dict[src_lang], lang_dict[tgt_lang])
# Translate text
translated_text = translate_text(model, tokenizer, input_text)
# Show the translated text
st.subheader(f'Translated Text ({tgt_lang}):')
st.write(translated_text)