File size: 2,316 Bytes
f17813b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
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.

    """
    
    # Extract text from our pdf
    pdf_content = ""
    
    with pp_open(pdf) as pdf_file:
        for page in pdf_file.pages:
            pdf_content += page.extract_text()
            
    # Convert pdf to speech and make AudioBook!
    tts = gTTS(text=pdf_content, lang=language)
    filename = os.path.basename(pdf)
    filename = f"{filename.split('.')[0]}.mp3"
    tts.save(filename)
    
    return f"Your PDF has been converted to speech. The MP3 file is saved as {os.path.abspath(filename)}"

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.Textbox(label="Output")

    with gr.Column():
        # Footer with links to LinkedIn, GitHub and Live demo of PhD defense
        footer_html = """

<div style="text-align: center; margin-top: 20px;">

    <a href="https://www.linkedin.com/in/pejman-ebrahimi-4a60151a7/" target="_blank">LinkedIn</a> |

    <a href="https://github.com/arad1367" target="_blank">GitHub</a> |

    <a href="https://arad1367.pythonanywhere.com/" target="_blank">Live demo of my PhD defense</a> 

    <br>

    Made with πŸ’– by Pejman Ebrahimi

</div>

"""
        gr.HTML(footer_html)

    # Layout the components
    button.click(convert_pdf_to_speech, inputs=[pdf_input, language_selector], outputs=output)
    
demo.launch()