API de texto a voz gratis: sin clave, sin cuota, en tu propio servidor
La mayoría de las API de texto a voz son gratis solo hasta cierto punto: te registras, recibes una clave de API y un plan gratuito con cuota mensual y límite de peticiones, y luego una factura por carácter. Para un prototipo está bien; para una app que habla mucho, un bot o un proceso que genera miles de frases, duele.
SuperClonica va por otro camino: el servidor de voz es una imagen Docker gratuita que ejecutas en tu ordenador o servidor. No hay clave que pedir ni cuota, solo tu hardware. Esta guía muestra cómo arrancarlo, llamarlo desde curl, Python y JavaScript, y cuánto cuesta de verdad lo «gratis».
Planes gratuitos y sus límites
Revisa tú mismo las condiciones actuales de cada proveedor en la nube: los planes gratuitos y los precios cambian.
- Los planes gratuitos en la nube suelen pedir cuenta y clave de API, y traen cuota mensual de caracteres y límites de peticiones.
- Tu texto va al proveedor en cada petición.
- Un servidor propio no necesita ni clave ni cuenta, y no tiene cuota.
- El servidor de SuperClonica habla 31 idiomas, con diez voces de serie gratuitas y más de 170 voces de catálogo.
Escucha las voces gratis en línea
En la página de cualquier voz, escribe una frase de 30 a 100 caracteres, elige el idioma y pulsa el botón para generarla. En unos segundos oyes lo que devolverá la API, sin cuenta.
Arranca la API y llámala
La respuesta es un WAV mono de 16 bits; las cabeceras X-Sample-Rate y X-Duration-Seconds lo describen, y GET /voices lista voces e idiomas.
- Arranca el servidor: docker run -d -p 8000:8000 -v superclonica-models:/models superclonica/superclonica:cpu. El primer arranque descarga el modelo, unos 385 MB.
- Llámalo con curl: curl -X POST http://localhost:8000/synthesize -H "Content-Type: application/json" -d '{"text": "Hello from a free API!", "voice": "F1", "lang": "en"}' -o hello.wav
- Desde Python, sin paquetes extra: import json, urllib.request; req = urllib.request.Request('http://localhost:8000/synthesize', data=json.dumps({'text': 'Hello', 'voice': 'F1', 'lang': 'en'}).encode(), headers={'Content-Type': 'application/json'}); open('hello.wav', 'wb').write(urllib.request.urlopen(req).read())
- Desde JavaScript o Node.js: const r = await fetch('http://localhost:8000/synthesize', {method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify({text: 'Hello', voice: 'F1', lang: 'en'})}); const wav = await r.arrayBuffer();
Claves, límites y escala
En tu propia máquina no hace falta clave. Si el servidor es accesible desde una red, define SUPERCLONICA_API_KEY y envía Authorization: Bearer con esa clave, o mantén el servidor privado. Por defecto una petición admite hasta 5000 caracteres, SUPERCLONICA_MAX_TEXT lo cambia y SUPERCLONICA_LANES permite atender varias peticiones a la vez. Antes de exponerlo, ponle HTTPS delante con cualquier proxy inverso.
Lo que cuesta de verdad lo gratis
El software es gratuito: el motor y la imagen son Apache 2.0, y el modelo Supertonic 3 está bajo OpenRAIL-M, que permite el uso comercial dentro de sus restricciones. Lo que pagas es la máquina: una CPU resuelve una frase corta en bastante menos de un segundo, y una GPU es más rápida con muchos usuarios a la vez. Las voces del catálogo se compran una vez y las diez de serie no cuestan nada.