Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| from transformers import AutoModelForSeq2SeqLM, AutoTokenizer | |
| # Function to load the translation model | |
| def load_model(model_name): | |
| tokenizer = AutoTokenizer.from_pretrained(model_name) | |
| model = AutoModelForSeq2SeqLM.from_pretrained(model_name) | |
| return tokenizer, model | |
| # Function to perform translation | |
| def translate_text(tokenizer, model, input_text, src_lang, tgt_lang): | |
| # Format the input text for the model | |
| input_text = f">>{tgt_lang}<< {input_text}" # Add language token | |
| inputs = tokenizer(input_text, return_tensors="pt", padding=True, truncation=True, max_length=512) | |
| outputs = model.generate(**inputs, max_length=512) | |
| translated_text = tokenizer.decode(outputs[0], skip_special_tokens=True) | |
| return translated_text | |
| # Streamlit app | |
| def main(): | |
| st.title("Language Translation App") | |
| st.markdown("Translate text between multiple languages using open-source models.") | |
| # Language options (expand as needed) | |
| languages = { | |
| "English": "en", | |
| "French": "fr", | |
| "German": "de", | |
| "Spanish": "es", | |
| "Chinese": "zh", | |
| "Arabic": "ar", | |
| "Hindi": "hi", | |
| "Urdu": "ur", | |
| "Russian": "ru", | |
| "Japanese": "ja", | |
| } | |
| # Sidebar for language selection | |
| st.sidebar.header("Settings") | |
| src_lang = st.sidebar.selectbox("Select Input Language", options=languages.keys()) | |
| tgt_lang = st.sidebar.selectbox("Select Output Language", options=languages.keys()) | |
| # Input text | |
| text_to_translate = st.text_area("Enter text to translate", height=150) | |
| # Load model and tokenizer | |
| model_name = "Helsinki-NLP/opus-mt-mul-en" # Multi-lingual to English model | |
| tokenizer, model = load_model(model_name) | |
| # Translate button | |
| if st.button("Translate"): | |
| if text_to_translate.strip() == "": | |
| st.error("Please enter some text to translate.") | |
| elif src_lang == tgt_lang: | |
| st.warning("Input and output languages are the same. Please select different languages.") | |
| else: | |
| # Perform translation | |
| st.spinner("Translating...") | |
| translated_text = translate_text(tokenizer, model, text_to_translate, languages[src_lang], languages[tgt_lang]) | |
| st.success("Translation Complete!") | |
| st.text_area("Translated Text", translated_text, height=150) | |
| if __name__ == "__main__": | |
| main() | |