Spaces:
Sleeping
Sleeping
import streamlit as st | |
from gtts import gTTS | |
from io import BytesIO | |
from PyPDF2 import PdfReader | |
st.set_page_config(page_title="π PDF to Audio π§", page_icon="π") | |
st.markdown(""" | |
<style> | |
body { | |
background-color: #F0F8FF; | |
font-family: 'Arial', sans-serif; | |
} | |
h1 { | |
color: #1E90FF; | |
font-size: 36px; | |
text-align: center; | |
margin-bottom: 30px; | |
} | |
h2 { | |
color: #00BFFF; | |
font-size: 24px; | |
margin-bottom: 10px; | |
} | |
p { | |
color: #333; | |
font-size: 18px; | |
} | |
.stAudio { | |
margin-bottom: 20px; | |
} | |
.stTextArea { | |
font-size: 18px; | |
padding: 10px; | |
} | |
.stButton { | |
background-color: #1E90FF; | |
color: #FFF; | |
font-size: 18px; | |
padding: 10px 20px; | |
border-radius: 5px; | |
margin-top: 20px; | |
} | |
</style> | |
""", unsafe_allow_html=True) | |
st.markdown("<h1>π PDF to Audio Converter π§</h1>", unsafe_allow_html=True) | |
col1, col2 = st.columns(2) | |
with col1: | |
st.markdown("<h2>π PDF File</h2>", unsafe_allow_html=True) | |
uploaded_file = st.file_uploader("Choose a file", "pdf") | |
with col2: | |
st.markdown("<h2>π’ Pages</h2>", unsafe_allow_html=True) | |
x = st.slider('Select the number of pages you wish to transcribe', min_value=1, max_value=100, value=10) | |
if uploaded_file is not None: | |
reader = PdfReader(uploaded_file) | |
X = len(reader.pages) | |
st.markdown(f"<p>Total pages in the PDF: {X}</p>", unsafe_allow_html=True) | |
i = 0 | |
while i <= X and i <= x: | |
page = reader.pages[i] | |
text = page.extract_text() | |
sound_file = BytesIO() | |
tts = gTTS(text, lang='en') | |
tts.write_to_fp(sound_file) | |
st.audio(sound_file, format='audio/mp3') | |
st.markdown(f"<p>Read aloud page {i+1} of {X} total pages.</p>", unsafe_allow_html=True) | |
i = i + 1 | |
st.balloons() | |
st.markdown("<h2>π That's the whole PDF! Have an awesome day! π</h2>", unsafe_allow_html=True) | |
st.markdown("<h2>βοΈ Text to Audio</h2>", unsafe_allow_html=True) | |
prompt = st.text_area("Copy/Paste or type in text to have read aloud", height=200) | |
if prompt: | |
st.write(prompt) | |
sound_file = BytesIO() | |
tts = gTTS(prompt, lang='en') | |
tts.write_to_fp(sound_file) | |
st.audio(sound_file, format='audio/mp3') | |
st.markdown("<button class='stButton'>Convert to Audio</button>", unsafe_allow_html=True) | |