File size: 3,001 Bytes
39e0760
 
2de692c
d986ac0
 
 
 
 
 
39e0760
2de692c
 
39e0760
2de692c
 
39e0760
 
2de692c
6c70207
 
2de692c
6c70207
 
 
2de692c
6c70207
d986ac0
39e0760
 
 
 
6c70207
d986ac0
6c70207
 
 
 
 
 
 
 
 
 
 
d986ac0
6c70207
 
 
 
 
 
 
 
 
 
 
d986ac0
 
 
6c70207
d986ac0
6c70207
d986ac0
 
 
39e0760
2de692c
39e0760
 
2de692c
d986ac0
2de692c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39e0760
 
 
2de692c
6c70207
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import gradio as gr
from transformers import pipeline
import os
from gtts import gTTS  # Importamos gTTS

# Función para convertir texto a audio
def convertir_texto_a_audio(texto, nombre_archivo):
    tts = gTTS(text=texto, lang='es')
    tts.save(nombre_archivo)

# Creamos un modelo de resumen más ligero
resumidor = pipeline("summarization", model="t5-small")

# Creamos un modelo de generación de diálogo más ligero
dialogador = pipeline("text-generation", model="microsoft/DialoGPT-small")

def transformar_texto(archivo):
    if archivo is None:
        raise gr.Error("Por favor, sube un archivo de texto.")

    try:
        # Lee el contenido del archivo subido
        with open(archivo.name, 'r', encoding='utf-8') as f:
            texto = f.read()
    except Exception as e:
        raise gr.Error(f"Error al leer el archivo: {e}")

    # Limitación para la versión gratuita
    max_palabras = 1000  # Puedes ajustar este número
    num_palabras = len(texto.split())
    if num_palabras > max_palabras:
        raise gr.Error(f"El texto excede el límite de {max_palabras} palabras para la versión gratuita.")

    try:
        # Resumimos el texto
        resumen = resumidor(
            texto,
            max_length=50,
            min_length=25,
            do_sample=False,
            clean_up_tokenization_spaces=True
        )[0]['summary_text']
    except Exception as e:
        raise gr.Error(f"Error al resumir el texto: {e}")

    try:
        # Generamos una conversación basada en el resumen
        prompt = f"Crear una conversación entre dos personas sobre: {resumen}"
        conversacion = dialogador(
            prompt,
            max_length=200,
            num_return_sequences=1,
            clean_up_tokenization_spaces=True
        )[0]['generated_text']
    except Exception as e:
        raise gr.Error(f"Error al generar la conversación: {e}")

    # Convertimos la conversación a audio
    ruta_audio = os.path.join("/tmp", "conversacion.mp3")
    try:
        convertir_texto_a_audio(conversacion, ruta_audio)
    except Exception as e:
        raise gr.Error(f"Error al convertir texto a audio: {e}")

    return ruta_audio

# Creamos la interfaz de usuario actualizada
interfaz = gr.Interface(
    fn=transformar_texto,
    inputs=gr.File(label="Sube tu documento de texto (.txt)"),
    outputs=gr.Audio(type="file", label="Escucha la conversación generada"),
    title="📝➡️🎙️ Transformador de Texto a Conversación",
    description="""
    Sube un documento de texto y conviértelo en una conversación tipo podcast entre dos personas.

    **Versión Gratuita:**
    - Límite de 1000 palabras por texto.
    - Conversación básica entre dos personas.

    **Próximamente:**
    - Versiones premium sin límites.
    - Personalización de voces y estilos.
    - Descarga en formato de audio.

    ¡Mantente atento para más actualizaciones!
    """,
    theme="default",
    allow_flagging="never"
)

interfaz.launch()