File size: 3,410 Bytes
1972978
 
f7bbca8
 
6649408
475929e
2da5166
1972978
bb1ef26
f7bbca8
6649408
f7bbca8
1972978
 
 
 
 
549c321
1972978
475929e
1972978
 
5a4e5ec
1972978
f7bbca8
1972978
24229cb
2da5166
24229cb
f7bbca8
 
1972978
c6f5d35
bbbbf9f
f7bbca8
da1c881
 
 
 
 
 
 
 
 
 
52cf223
 
 
 
 
 
 
da1c881
 
52cf223
 
 
da1c881
 
 
b720e9f
da1c881
 
 
 
 
 
 
 
 
1972978
a5bf6ff
1972978
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
67
68
69
70
71
72
73
74
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)