guide5 min read
A free AI voice you're actually allowed to use
Give this to your agent
Paste into Claude Code, Cursor — any agent. It reads the guide and does the setup for you.
Follow this StackScout guide in my project: "A free AI voice you're actually allowed to use" https://stackscout.app/guides/free-ai-voice Read it, then set up what it describes. When you're done, give me a one-line summary.
Every "best free TTS" list ranks by how the voices sound and never checks whether you're allowed to publish the audio. If your channel is monetised — ads, a product link, a paid newsletter — most of those "free" options are off the table.
This is the setup we run for StackScout's own reels, after checking every licence at the source on 31 July 2026. Two options, both €0 forever, both with a real legal basis.
The rule that decides everything here: the code licence is not the weights licence. An Apache-2.0 repo tells you nothing about the model it downloads.
Option A — Azure Speech, free tier (F0)
The one almost nobody mentions, because it sounds like it should cost money. It doesn't.
| Free per month | 500,000 characters, recurring — not a trial |
| Voices included | Neural, e.g. en-US-AndrewMultilingualNeural |
| Licence | A normal contract, with usage rights and an SLA |
| Cost beyond that | ~$15 per 1M characters |
A typical short-form channel uses 10,000–15,000 characters a month. That is roughly 38× headroom inside the free tier.
curl -sS -X POST "https://$REGION.tts.speech.microsoft.com/cognitiveservices/v1" \
-H "Ocp-Apim-Subscription-Key: $AZURE_SPEECH_KEY" \
-H "Content-Type: application/ssml+xml" \
-H "X-Microsoft-OutputFormat: audio-24khz-160kbitrate-mono-mp3" \
--data "<speak version='1.0' xml:lang='en-US'><voice name='en-US-AndrewMultilingualNeural'>Your line here.</voice></speak>" \
-o out.mp3
Two limits to plan around, both documented by Microsoft:
- 20 requests per 60 seconds, and the docs put it plainly: "This limit isn't adjustable." Batch-render with ~3 seconds between calls and back off a full minute on an HTTP 429.
- HD voices and voice cloning are not in F0. The HD variants do sound noticeably more human, but they start around $22 per 1M characters — for our volume about $0.30/month. Worth knowing; not worth pretending it's free.
Pick F0 explicitly when you create the resource. S0 bills from the first character, and the two are one dropdown apart.
Option B — Chatterbox, on your own machine
For when you want a voice no provider can change, reprice, or withdraw.
| Licence | MIT — on the code and the weights |
| Cost | €0, no account, no network |
| Cloning | Yes, from a few seconds of reference audio, no transcript needed |
| Speed | ~0.1× realtime on an M4: 4 seconds of audio ≈ 30 seconds of compute |
pip install chatterbox-tts "setuptools<81"
from chatterbox.tts import ChatterboxTTS
import torchaudio as ta
m = ChatterboxTTS.from_pretrained(device="mps") # "cuda" or "cpu" elsewhere
wav = m.generate("Your line here.", exaggeration=0.5, cfg_weight=0.5)
ta.save("out.wav", wav, m.sr)
The setuptools<81 pin is not optional. Chatterbox's watermarker imports
pkg_resources, which setuptools dropped in v81. Without the pin, from_pretrained fails
with a misleading 'NoneType' object is not callable.
Chatterbox ships exactly one voice. It sits as conds.pt inside the weights — the one
you hear in every Chatterbox demo online. Other voices come from a reference clip:
m.generate(text, audio_prompt_path="reference.wav")
Two dials change delivery without any reference: exaggeration (0.3 flat → 0.8 emphatic)
and cfg_weight (higher sticks closer to the written words).
Loading the model takes ~14 seconds per process, so render a whole batch in one run rather than calling a script per line.
What we rejected, and why
Everything below sits near the top of the usual free-TTS lists. Each is a real problem for a monetised channel — and none of them fail on sound quality.
| Option | Why not |
|---|---|
| ElevenLabs free tier | Terms of Use: "if you access or use our Services free of charge … you may only use the Services for non-commercial purposes." The Developer-API page is the same account tiers, not a separate agreement. |
| Coqui ⓍTTS-v2 | Weights are CPML: non-commercial, and the restriction explicitly reaches the output and indirect revenue. Coqui the company is also gone. |
| F5-TTS | Code MIT, weights CC-BY-NC-4.0 — the README says so itself. |
| Orpheus-TTS | Tagged apache-2.0 on HuggingFace, but the weights are a Llama-3.2-3B-Instruct finetune. Llama weights can't be relicensed; "Built with Llama" and the model-naming clause still apply. |
Piper ryan / hfc_female |
Piper itself is MIT, but its two most-recommended English voices are individually non-commercial. |
| edge-tts | The one we used ourselves for two months. An unofficial wrapper around Edge's read-aloud endpoint: LGPLv3 covers the client, not the audio. There is no grant for the output at all, no contract, no SLA. Not a lawsuit risk — an operational one. |
One thing that isn't a licence question
You can technically feed any YouTube clip in as a reference and clone that voice. Don't. A real person's voice needs their consent, and another TTS provider's output is covered by their terms — including the ones that forbid using it to build a competing voice.
If you want a voice that is genuinely yours: record 10–15 minutes of your own. Quiet room, one take, normal pace. Archive the raw file. That recording is the only asset here that gets more valuable over time, and nobody can revoke it.
Which one to pick
Publishing this week? Azure F0 — shortest path to a voice you're allowed to use, and no hardware question.
Want the voice to be yours? Chatterbox with your own recording as the reference. Slower to render, but nothing about it can be taken away.
We run both: Azure for volume, Chatterbox for the voice we own.
✦ free guides, every week
New setups like this land with each weekly drop — your agent can pull them live through the MCP.
See the connector