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