Spaces:
Runtime error
Runtime error
import gradio as gr | |
from gtts import gTTS | |
from pdfplumber import open as pp_open | |
import os | |
def convert_pdf_to_speech(pdf, language): | |
""" | |
This function takes in a PDF file and converts it to speech. | |
Parameters: | |
pdf (str): The path to the PDF file. | |
language (str): The language of the text. | |
Returns: | |
A message stating that the PDF has been converted to speech and the path to the MP3 file. | |
""" | |
# Extract text from the PDF | |
pdf_content = "" | |
with pp_open(pdf) as pdf_file: | |
for page in pdf_file.pages: | |
pdf_content += page.extract_text() | |
# Define the output directory and ensure it exists | |
output_dir = "output" | |
if not os.path.exists(output_dir): | |
os.makedirs(output_dir) | |
# Convert PDF to speech | |
tts = gTTS(text=pdf_content, lang=language) | |
filename = os.path.basename(pdf) | |
filename = f"{filename.split('.')[0]}.mp3" | |
# Save the file in the 'output' folder | |
output_path = os.path.join(output_dir, filename) | |
tts.save(output_path) | |
return output_path | |
demo = gr.Blocks(theme='gradio/soft') | |
with demo: | |
# App description | |
with gr.Column(): | |
gr.Markdown("<b>PDF Text-to-Speech Converter</b>") | |
gr.Markdown("Convert your PDF files to audio books") | |
# Input for the PDF | |
pdf_input = gr.File(label="Select a PDF", type="filepath") | |
# Language selector | |
language_selector = gr.Dropdown( | |
label="Language", | |
value="en", | |
choices=["en", "es", "de", "it", "fr"], | |
interactive=True, | |
) | |
# Button to start the conversion process | |
button = gr.Button("Convert PDF to Speech") | |
# Output message | |
output = gr.File(label="Download MP3") | |
# Button click handler | |
button.click(convert_pdf_to_speech, inputs=[pdf_input, language_selector], outputs=output) | |
demo.launch() | |