Crea una app web de texto a voz con Gradio
Una pequeña página donde escribes texto y lo oyes con una voz natural es un clásico primer proyecto de IA, una herramienta interna útil y una buena demo de producto. Gradio convierte una función de Python en esa página en pocas líneas, y el motor gratuito SuperClonica aporta la voz en un procesador normal.
Esta guía muestra la app mínima, cómo añadir voces y ajustes y cómo alojarla gratis; nuestra propia demo en Hugging Face Spaces está hecha exactamente así.
Qué vas a construir
Todo funciona dentro de tu proceso de Python: los textos no se envían a ningún servicio de voz.
- Un cuadro de texto, un selector de voz y un reproductor con botón de descarga.
- Diez voces de serie y cualquier voz del catálogo que tengas.
- Funciona en un portátil, un servidor o una CPU gratuita en la nube.
- Sin tarjeta gráfica ni API de pago.
Escucha primero las voces
Antes de programar, escucha las voces en sus páginas: escribe una frase de 30 a 100 caracteres, elige el idioma y pulsa el botón para generarla. En unos segundos sabrás qué voces ofrecer en tu app.
La app mínima
La salida Audio de Gradio recibe un par de frecuencia de muestreo y array de audio, así que devuelve (rate, audio) en ese orden.
- Instala ambos paquetes: python -m pip install superclonica-cpu gradio.
- Escribe la app: import gradio as gr; from superclonica import Superclonica; tts = Superclonica(); def speak(text, voice): audio, rate = tts.synthesize(text, voice=voice, lang="es"); return (rate, audio) — luego gr.Interface(fn=speak, inputs=[gr.Textbox(label="Text"), gr.Dropdown(["F1", "F2", "M1", "M2"], label="Voice")], outputs=gr.Audio()).launch().
- Ejecuta el archivo con Python y abre la dirección local que muestra Gradio.
- La primera vez se descarga el modelo Supertonic 3, unos 385 MB; después arranca en segundos.
Voces, velocidad y muchos usuarios
Añade voces del catálogo pasando la ruta de un archivo de voz en lugar de F1 o F2, y ofrece un desplegable de idiomas con los códigos de los 31 idiomas compatibles. La velocidad se cambia en el motor, por ejemplo tts.speed = 1.1, entre 0.7 y 2.0. Crea el motor una vez al principio del archivo y, cuando varias personas usen la app a la vez, envuelve la llamada en un threading lock para que las peticiones vayan por turnos.
Alójala gratis
Hugging Face Spaces ejecuta apps de Gradio en CPU gratuita: pon el archivo en un Space como app.py con un requirements.txt que incluya superclonica-cpu, y el Space lo construye. Nuestra propia demo de SuperClonica funciona así con dos núcleos de CPU compartidos. Limita la longitud del texto en una app pública y ofrece solo voces que puedas compartir: las voces de serie son gratis con la licencia del modelo, mientras que las voces compradas del catálogo son para tus propios proyectos.