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