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