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)