Spaces:
Sleeping
Sleeping
| # app.py | |
| import streamlit as st | |
| from transformers import pipeline | |
| from gtts import gTTS | |
| from io import BytesIO | |
| # Title and Introduction | |
| st.title("Multilingual Language Learning App") | |
| st.write("Translate text, correct grammar, and practice pronunciation in various languages!") | |
| # Sidebar Options | |
| st.sidebar.header("Choose an Operation") | |
| options = ["Translate Text", "Correct Grammar", "Practice Pronunciation"] | |
| operation = st.sidebar.selectbox("Operation", options) | |
| # Input Text | |
| text = st.text_area("Enter your text here:") | |
| # Supported Languages | |
| languages = { | |
| "English": "en", "French": "fr", "Spanish": "es", "German": "de", "Chinese": "zh", "Japanese": "ja", | |
| "Arabic": "ar", "Russian": "ru", "Hindi": "hi", "Urdu": "ur", "Portuguese": "pt", "Italian": "it", | |
| "Dutch": "nl", "Korean": "ko", "Swedish": "sv", "Turkish": "tr", "Polish": "pl", "Danish": "da", | |
| "Finnish": "fi", "Norwegian": "no", "Greek": "el", "Hebrew": "he", "Thai": "th", "Vietnamese": "vi", | |
| "Czech": "cs", "Hungarian": "hu", "Indonesian": "id", "Malay": "ms", "Filipino": "tl", "Swahili": "sw", | |
| } | |
| # Translation Functionality | |
| if operation == "Translate Text": | |
| source_language = st.selectbox("Select Source Language", list(languages.keys())) | |
| target_language = st.selectbox("Select Target Language", list(languages.keys())) | |
| if st.button("Translate"): | |
| try: | |
| model_name = f"Helsinki-NLP/opus-mt-{languages[source_language]}-{languages[target_language]}" | |
| translator = pipeline("translation", model=model_name) | |
| translation = translator(text, max_length=400)[0]["translation_text"] | |
| st.write("### Translation:") | |
| st.write(translation) | |
| except Exception as e: | |
| st.error(f"Translation failed: {e}") | |
| # Grammar Correction Functionality | |
| elif operation == "Correct Grammar": | |
| if st.button("Correct Grammar"): | |
| try: | |
| corrector = pipeline("text2text-generation", model="t5-base") | |
| corrected_text = corrector(f"grammar: {text}", max_length=400)[0]["generated_text"] | |
| st.write("### Corrected Text:") | |
| st.write(corrected_text) | |
| except Exception as e: | |
| st.error(f"Grammar correction failed: {e}") | |
| # Pronunciation Practice Functionality | |
| elif operation == "Practice Pronunciation": | |
| language = st.selectbox("Select Pronunciation Language", list(languages.keys())) | |
| if st.button("Generate Audio"): | |
| try: | |
| tts = gTTS(text=text, lang=languages[language]) | |
| audio_file = BytesIO() | |
| tts.write_to_fp(audio_file) | |
| audio_file.seek(0) | |
| st.audio(audio_file, format="audio/mp3") | |
| st.write("### Listen to the pronunciation!") | |
| except Exception as e: | |
| st.error(f"Pronunciation generation failed: {e}") | |
| # Prompt for Text Input | |
| else: | |
| st.write("Please enter text to begin.") | |