Translator / app.py
bhagwandas's picture
Update app.py
6a8b2c9 verified
import streamlit as st
from transformers import MarianMTModel, MarianTokenizer
import torch
# Title and Description
st.set_page_config(page_title='Language Translation App', layout='centered')
st.title('Language Translation App')
st.write('Translate text between multiple languages using an open-source model.')
# Model Selection
@st.cache_resource
def load_model(src_lang, tgt_lang):
if not torch.cuda.is_available():
st.warning('CUDA is not available. The model will run on CPU, which may be slower.')
model_name = f'Helsinki-NLP/opus-mt-{src_lang}-{tgt_lang}'
tokenizer = MarianTokenizer.from_pretrained(model_name)
model = MarianMTModel.from_pretrained(model_name)
return tokenizer, model
# Sidebar for Language Selection
st.sidebar.header('Language Selection')
src_lang = st.sidebar.selectbox('Select Source Language', ['en', 'fr', 'es', 'de', 'it', 'pt', 'ru', 'zh', 'ja', 'ar'], index=0)
tgt_lang = st.sidebar.selectbox('Select Target Language', ['en', 'fr', 'es', 'de', 'it', 'pt', 'ru', 'zh', 'ja', 'ar'], index=1)
# Main Input Area
st.write('### Enter text to translate:')
text = st.text_area('Text Input', placeholder='Type your text here...')
# Translation Button
if st.button('Translate'):
if text.strip() == '':
st.warning('Please enter text to translate.')
else:
try:
tokenizer, model = load_model(src_lang, tgt_lang)
inputs = tokenizer.encode(text, return_tensors='pt')
translated = model.generate(inputs, max_length=1000, num_beams=5, early_stopping=True)
result = tokenizer.decode(translated[0], skip_special_tokens=True)
st.success('### Translated Text:')
st.write(result)
except Exception as e:
st.error(f'Error: {e}')
# Footer
st.sidebar.write('Powered by Helsinki-NLP/opus-mt')
st.sidebar.write('Built with Streamlit')
# Instructions for Running
st.write('**To run the app:**')
st.code('streamlit run app.py')