Spaces:
Runtime error
Runtime error
import streamlit as st | |
from gtts import gTTS | |
from io import BytesIO | |
from PyPDF2 import PdfReader | |
st.image('OIG3 (4).jpeg', caption='Your host on this PDF-to-Speech adventure!') | |
st.markdown("## Ready for an Epic PDF Adventure? π") | |
st.markdown("Buckle up! Upload your PDF, set your preferences, and let's explore the text together!") | |
# Sliders for page range selection | |
start_page = st.slider('Select the starting page', min_value=1, max_value=400, value=1) | |
end_page = st.slider('Select the number of pages you wish to transcribe', min_value=1, max_value=400, value=100) | |
uploaded_file = st.file_uploader("Choose a PDF file", type="pdf") | |
if uploaded_file is not None: | |
reader = PdfReader(uploaded_file) | |
total_pages = len(reader.pages) | |
st.write(f"The uploaded PDF has {total_pages} pages.") | |
if start_page <= total_pages: | |
for i in range(start_page - 1, min(end_page, total_pages)): | |
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) | |
st.write(f"Page {i + 1} of {total_pages} has been read aloud.") | |
st.write("π Adventure complete! Have a fantastic day! π") | |
else: | |
st.write("β οΈ The starting page exceeds the total number of pages in the PDF.") | |
prompt = st.chat_input("Copy/Paste or type in text to have read aloud") | |
if prompt: | |
st.write(prompt) | |
with st.popover("β¨ Open your text-to-speech from text input β¨"): | |
sound_file = BytesIO() | |
tts = gTTS(prompt, lang='en') | |
tts.write_to_fp(sound_file) | |
st.audio(sound_file) | |