# 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.")