Armando117's picture
Update app.py
a939f1b
raw
history blame
2.19 kB
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()