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) | |