Spaces:
Build error
Build error
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( | |
""" | |
<style> | |
.stApp { | |
background: linear-gradient(to bottom right, #6a11cb, #2575fc); | |
} | |
</style> | |
""", | |
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.") |