import streamlit as st from gtts import gTTS from io import BytesIO import time # Dictionary to map language codes to full names LANGUAGES = { "ar": "Arabic", "bn": "Bengali", "zh": "Chinese", "nl": "Dutch", "en": "English", "fa": "Persian", "fr": "French", "de": "German", "el": "Greek", "he": "Hebrew", "hi": "Hindi", "it": "Italian", "ja": "Japanese", "ko": "Korean", "ms": "Malay", "no": "Norwegian", "pl": "Polish", "pt": "Portuguese", "ru": "Russian", "es": "Spanish", "sv": "Swedish", "th": "Thai", "tr": "Turkish", "ur": "Urdu", "vi": "Vietnamese", } # Function to convert text to speech def text_to_speech(text, lang='en'): tts = gTTS(text=text, lang=lang, slow=False) mp3_fp = BytesIO() tts.write_to_fp(mp3_fp) mp3_fp.seek(0) return mp3_fp # Custom CSS for gradient background st.markdown( """ """, unsafe_allow_html=True ) # Streamlit app layout st.title("Text-to-Speech App") # Sidebar for language selection and other options st.sidebar.header("Options") # Language selection lang_code = st.sidebar.selectbox( "Choose language", options=list(LANGUAGES.keys()), format_func=lambda x: LANGUAGES[x] # Display full name ) # Instruction for using the app st.markdown("### Instructions For Using App") st.markdown( """ 1. Enter the text you want to convert to speech in the text box below. 2. Select the language from the sidebar. 3. Click the 'Convert to Speech' button to generate the audio file. 4. Click the 'Download' button to download the audio file. """ ) st.caption("---") # Text input user_text = st.text_area("Enter your text:", "Hello, world!") # Initialize file variable audio_file = None # Convert text to speech and provide download button if st.button("Convert to Speech"): if user_text: with st.spinner("Generating audio..."): time.sleep(2) # 2-second loading simulation audio_file = text_to_speech(user_text, lang_code) st.audio(audio_file, format='audio/mp3') # Make the audio file downloadable st.download_button( label="Download Audio", data=audio_file, file_name="output.mp3", mime="audio/mp3" ) else: st.error("Please enter some text!") st.markdown("Developed by Muhammad Jawad.")