File size: 2,861 Bytes
39e0760
 
2de692c
39e0760
2de692c
 
39e0760
2de692c
 
39e0760
 
2de692c
6c70207
 
2de692c
6c70207
 
 
2de692c
6c70207
39e0760
 
 
 
 
6c70207
39e0760
6c70207
 
 
 
 
 
 
 
 
 
 
39e0760
6c70207
 
 
 
 
 
 
 
 
 
 
39e0760
2de692c
 
6c70207
 
 
 
 
2de692c
 
39e0760
2de692c
39e0760
 
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
import gradio as gr
from transformers import pipeline
import os

# 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}")
    
    # Guardamos la conversación en un archivo en /tmp
    ruta_archivo = os.path.join("/tmp", "conversacion.txt")
    try:
        with open(ruta_archivo, "w", encoding='utf-8') as f:
            f.write(conversacion)
    except Exception as e:
        raise gr.Error(f"Error al guardar la conversación: {e}")
    
    return ruta_archivo

# Creamos la interfaz de usuario actualizada
interfaz = gr.Interface(
    fn=transformar_texto,
    inputs=gr.File(label="Sube tu documento de texto (.txt)"),
    outputs=gr.File(label="Descarga 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()