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()