import gradio as gr from pydub import AudioSegment import PyPDF2 from gtts import gTTS import tempfile import os # Función para convertir PDF a audio def convert_pdf_to_audio(pdf_file_path): try: reader = PyPDF2.PdfReader(pdf_file_path) # Extraer texto del PDF text = "" for page in reader.pages: text += page.extract_text() if not text: return "No se pudo extraer texto del PDF." # Convertir texto a audio tts = gTTS(text=text, lang='es') audio_file_path = pdf_file_path.replace(".pdf", ".wav") tts.save(audio_file_path) # Leer el archivo de audio # audio_data = AudioSegment.from_wav(audio_file_path) return audio_file_path except Exception as e: return str(e) # Crear la interfaz de Gradio # Descripción de las bibliotecas utilizadas desc_bibliotecas = """ Este conversor utiliza las siguientes bibliotecas: - **PyPDF2**: para leer archivos PDF y extraer texto. - **gTTS (Google Text-to-Speech)**: para convertir el texto extraído en voz. - **Gradio**: para crear esta interfaz de usuario interactiva. """ # Descripción de la arquitectura de gTTS desc_gtts = """ **Arquitectura de Aprendizaje Automático de Google Text-to-Speech (utilizada por gTTS):** - El núcleo de Google Text-to-Speech es su capacidad para convertir texto en voz que suena extremadamente natural y humana. Esto se logra a través de modelos de aprendizaje automático de vanguardia, que incluyen redes neuronales profundas y técnicas de procesamiento del lenguaje natural. - Uno de los avances más significativos en la tecnología TTS de Google es el uso de modelos de red neuronal WaveNet, desarrollados por DeepMind. Estos modelos representan un gran salto respecto a los anteriores sistemas TTS basados en concatenación o parametrización. - WaveNet utiliza una red neuronal convolucional profunda para generar audio. A diferencia de los sistemas TTS tradicionales que concatenan pedazos de audio grabados, WaveNet genera el habla directamente a partir del texto en una forma más fluida y realista, capturando las sutilezas del habla humana, como el tono y la cadencia. - Este enfoque permite a WaveNet modelar la variabilidad y riqueza de la voz humana, generando resultados que pueden ser indistinguibles de la voz humana real. Además, puede adaptarse para producir diferentes estilos de habla y acentos, lo que lo hace extremadamente versátil. - Google Text-to-Speech, accedido a través de gTTS, aplica constantemente actualizaciones y mejoras en sus modelos, incorporando los últimos avances en inteligencia artificial y aprendizaje automático, lo que garantiza una calidad de voz y una precisión en la pronunciación cada vez mejores. """ # Crear la interfaz de Gradio usando gr.Blocks with gr.Blocks() as iface: gr.Markdown("## Conversor de PDF a Audio") gr.Markdown("Selecciona un archivo PDF y conviértelo a audio en formato WAV.") with gr.Row(): file_input = gr.File(type="filepath", label="Selecciona un archivo PDF") audio_output = gr.Audio(type="filepath", label="Audio generado") convert_button = gr.Button("Convertir") gr.Markdown(desc_bibliotecas) gr.Markdown(desc_gtts) file_input.change(fn=convert_pdf_to_audio, inputs=file_input, outputs=audio_output) # Ejecutar la interfaz iface.launch(share=True)