Spaces:
Runtime error
Runtime error
Download app.py from Harsh8957/Language-translator-chatbot: direct link, hf CLI and curl.
- Browser
- Download file 2.61 kB
-
https://huggingface.co/spaces/Harsh8957/Language-translator-chatbot/resolve/main/app.py
- Command line
-
hf download hf://spaces/Harsh8957/Language-translator-chatbot/app.py
-
curl -L -o app.py https://huggingface.co/spaces/Harsh8957/Language-translator-chatbot/resolve/main/app.py
2.61 kB
| import streamlit as st | |
| from transformers import AutoTokenizer, AutoModelForSeq2SeqLM, pipeline | |
| st.set_page_config( | |
| page_title="π Language Translator Chatbot", | |
| page_icon="π€", | |
| layout="centered", | |
| ) | |
| st.title("π Language Translator Chatbot") | |
| st.markdown( | |
| """ | |
| π Welcome to your personal **AI-powered Translator Chatbot**! | |
| Type any sentence in your language, and Iβll translate it into your selected language. | |
| π¬ **Features:** | |
| - Supports English, Hindi, Marathi, French, Spanish, and German | |
| - Built using **Hugging Face Transformers** | |
| - Deployed on **Hugging Face Spaces** using **Streamlit** | |
| --- | |
| """ | |
| ) | |
| LANGS = { | |
| "English": "en", | |
| "Hindi": "hi", | |
| "Marathi": "mr", | |
| "French": "fr", | |
| "Spanish": "es", | |
| "German": "de" | |
| } | |
| MODEL_MAP = { | |
| ("en", "hi"): "Helsinki-NLP/opus-mt-en-hi", | |
| ("hi", "en"): "Helsinki-NLP/opus-mt-hi-en", | |
| ("en", "mr"): "Helsinki-NLP/opus-mt-en-mr", | |
| ("mr", "en"): "Helsinki-NLP/opus-mt-mr-en", | |
| ("en", "fr"): "Helsinki-NLP/opus-mt-en-fr", | |
| ("fr", "en"): "Helsinki-NLP/opus-mt-fr-en", | |
| ("en", "es"): "Helsinki-NLP/opus-mt-en-es", | |
| ("es", "en"): "Helsinki-NLP/opus-mt-es-en", | |
| ("en", "de"): "Helsinki-NLP/opus-mt-en-de", | |
| ("de", "en"): "Helsinki-NLP/opus-mt-de-en" | |
| } | |
| def load_model(model_name): | |
| tokenizer = AutoTokenizer.from_pretrained(model_name) | |
| model = AutoModelForSeq2SeqLM.from_pretrained(model_name) | |
| translator = pipeline("translation", model=model, tokenizer=tokenizer) | |
| return translator | |
| text = st.text_area("βοΈ Enter text to translate:", height=150) | |
| col1, col2 = st.columns(2) | |
| with col1: | |
| src_lang = st.selectbox("Source language", list(LANGS.keys()), index=0) | |
| with col2: | |
| tgt_lang = st.selectbox("Target language", list(LANGS.keys()), index=1) | |
| if st.button("π Translate"): | |
| if not text.strip(): | |
| st.warning("Please enter some text.") | |
| elif src_lang == tgt_lang: | |
| st.info("Source and target languages are the same.") | |
| else: | |
| model_name = MODEL_MAP.get((LANGS[src_lang], LANGS[tgt_lang])) | |
| if not model_name: | |
| st.error("β No model found for this language pair.") | |
| else: | |
| with st.spinner("β³ Loading model... please wait (first time only)"): | |
| translator = load_model(model_name) | |
| output = translator(text, max_length=512) | |
| translated_text = output[0]['translation_text'] | |
| st.success("β Translation complete!") | |
| st.subheader("Translated text:") | |
| st.write(translated_text) | |