Free text to speech API: no key, no quota, your own server
Most text-to-speech APIs are free only to a point: you sign up, get an API key, and a free tier with a monthly quota and rate limits, then a bill per character. That is fine for a prototype and painful for an app that talks a lot, a bot, or a pipeline that voices thousands of lines.
SuperClonica takes another route: the speech server is a free Docker image you run on your own computer or server. There is no key to request and no quota, just your hardware. This guide shows how to start it, call it from curl, Python and JavaScript, and what “free” honestly costs.
Free tiers and their limits
Check the current terms of any cloud provider yourself: free tiers change, and so do prices.
- Cloud free tiers usually need an account and an API key, and come with monthly character quotas and rate limits.
- Your text goes to the provider with every request.
- A self-hosted server needs neither a key nor an account, and has no quota.
- SuperClonica’s server speaks 31 languages, with ten free stock voices and more than 170 catalog voices.
Hear the voices free online
On the page of any voice, type a line of 30 to 100 characters, choose the language and press Voice it. In a few seconds you hear what the API will return, with no account.
Start the API and call it
The answer is a 16-bit mono WAV; the headers X-Sample-Rate and X-Duration-Seconds describe it, and GET /voices lists voices and languages.
- Start the server: docker run -d -p 8000:8000 -v superclonica-models:/models superclonica/superclonica:cpu. The first start downloads the model, about 385 MB.
- Call it with 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
- From Python, with no extra packages: 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())
- From JavaScript or 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();
Keys, limits and scaling
No key is needed on your own machine. If the server is reachable from a network, set SUPERCLONICA_API_KEY and send Authorization: Bearer with that key, or keep the server private. A request takes up to 5,000 characters by default, SUPERCLONICA_MAX_TEXT changes that, and SUPERCLONICA_LANES lets several requests run at once. Put HTTPS in front of it with any reverse proxy before you expose it.
What free really costs
The software is free: the engine and the image are Apache 2.0, and the Supertonic 3 model is under OpenRAIL-M, which allows commercial use within its restrictions. What you pay for is the machine: a CPU handles a short phrase in well under a second, a GPU is faster for many users at once. Catalog voices are bought once, and the ten stock voices cost nothing.