Spaces:
Runtime error
Runtime error
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() | |