Spaces:
Sleeping
Sleeping
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() | |