File size: 2,194 Bytes
f7bbca8
 
 
6649408
475929e
f7bbca8
a939f1b
 
 
 
 
 
 
 
 
 
 
f7bbca8
 
a4129d6
c6f5d35
 
 
6649408
 
549c321
f7bbca8
c6f5d35
475929e
f7bbca8
 
549c321
c6f5d35
8b69ef1
f7bbca8
a4129d6
c6f5d35
 
 
 
475929e
a4129d6
c6f5d35
 
f7bbca8
a4129d6
c6f5d35
 
 
a60195e
f7bbca8
 
cf98ba2
 
c6f5d35
f7bbca8
 
 
5f29ead
cf98ba2
f7bbca8
 
 
 
 
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
import PyPDF2
from gtts import gTTS
import gradio as gr
import tempfile
import os

# Ruta del directorio que quieres asegurarte de que exista
dir_path = '/tmp/gradio/'

# Verifica si el directorio existe
if not os.path.exists(dir_path):
    try:
        # Crea el directorio si no existe
        os.makedirs(dir_path)
    except Exception as e:
        print(f"No se pudo crear el directorio {dir_path}: {e}")

def convert_pdf_page_to_audio(pdf_file, page_number):
    try:
        # Crear archivo temporal para el PDF
        with tempfile.NamedTemporaryFile(delete=False, suffix='.pdf') as temp_pdf_file:
            temp_pdf_file.write(pdf_file.read())
            pdf_file_path = temp_pdf_file.name

        reader = PyPDF2.PdfReader(pdf_file_path)
        page_number = int(page_number)
        if page_number < 0 or page_number >= len(reader.pages):
            os.remove(pdf_file_path)
            return None, "Número de página inválido."

        text = reader.pages[page_number].extract_text()
        if not text:
            os.remove(pdf_file_path)
            return None, "No se pudo extraer texto de la página."

        # Crear archivo temporal para el audio
        with tempfile.NamedTemporaryFile(delete=False, suffix='.mp3') as temp_audio_file:
            tts = gTTS(text=text, lang='es')
            tts.save(temp_audio_file.name)
            audio_file_path = temp_audio_file.name

        # Leer y devolver los datos binarios del archivo de audio
        with open(audio_file_path, 'rb') as audio_file:
            audio_data = audio_file.read()

        # Eliminar archivos temporales
        os.remove(pdf_file_path)
        os.remove(audio_file_path)

        return audio_data

    except Exception as e:
        print(f"Error: {str(e)}")
        return None, "Se produjo un error al procesar el archivo."

# Crear la interfaz de Gradio
iface = gr.Interface(
    fn=convert_pdf_page_to_audio,
    inputs=[gr.File(type="filepath"), gr.Number(label="Número de Página")],
    outputs=gr.Audio(type="numpy"),
    title="Conversor de PDF a Audiobook",
    description="Sube un archivo PDF y selecciona la página que deseas escuchar como audio."
)

iface.launch()