Self Hosted Text to Speech: Real Costs vs Hosted APIs
Self hosted text to speech vs hosted APIs: compare GPU rental, per-character prices and break-even volumes, with worked cost examples as of October 2026.
Self-hosting text to speech tends to pay off only at high, steady volume. A GPU rented around the clock costs about $248 to $588 a month before storage, engineering time or redundancy. Against OpenAI's tts-1 at $15 per million characters, self-hosting breaks even at roughly 16 to 39 million characters a month, depending on the GPU.
Self-hosted vs hosted TTS at a glance
| Factor | Hosted API | Self-hosted | |---|---|---| | Cost shape | Per character or per token | Fixed GPU time, whether busy or idle | | Setup | An API key and a provider account | Model install, GPU access and monitoring | | Model choice | The provider's list | Any open model whose license you accept | | Licensing | The provider's terms of service | Each model's own license |
What hosted text to speech costs
These are published list prices per million characters. Google Cloud and Azure are left out because their figures could not be verified on the pricing pages read for this guide.
| Service | Tier or model | Price per 1M characters | |---|---|---| | ElevenLabs API | Flash or Turbo ($0.04 per 1K) | $40 | | ElevenLabs API | Multilingual v2 or v3 ($0.08 per 1K) | $80 | | OpenAI API | tts-1 | $15 | | Amazon Polly | Standard | $4 | | Amazon Polly | Neural | $16 | | DeepInfra (third-party host) | Kokoro-82M | $0.99 | | Artificial Analysis listing (provider price) | Kokoro-82M | $0.70 | | Artificial Analysis listing (provider price) | Chatterbox | $25 | | OndaLabs (derived from plan prices) | Onda Lite, Starter plan | $52.94 | | OndaLabs (derived from plan prices) | Onda Flash, Starter plan | $79.41 |
The OndaLabs rows are derived. The Starter plan is $9 for 170,000 credits, Onda Lite uses 1 credit per character and Onda Flash uses 1.5. OndaLabs sells credit plans for its studio, and this article does not describe any API.
What a self-hosted TTS server costs
The hourly rates below come from RunPod, Modal and a secondary price tracker for AWS. The monthly column multiplies each hourly rate by 730 hours, the cost of running the machine around the clock.
| Option | Hourly rate | Always-on monthly cost (derived) | |---|---|---| | RunPod RTX 4090 24GB, Community Cloud | $0.34 | $248 | | RunPod L4 24GB, Community Cloud | $0.44 | $321 | | RunPod L4 24GB, Secure Cloud | $0.59 | $431 | | Modal L4, per-second rate | about $0.80 | $583 | | AWS g6.xlarge (one L4), on-demand, from a secondary tracker | $0.8048 | $588 |
The AWS rate comes from a third-party tracker and does not state region or operating system, so do not quote it as an official AWS price. Community Cloud reliability terms were not checked.
Break-even: a worked example
The break-even volume is the monthly GPU cost divided by the hosted price per million characters:
Break-even characters per month = monthly GPU cost ÷ price per 1M characters × 1,000,000
For example, a $248 machine against a $15 per million API breaks even at about 16.5 million characters a month.
| Hosted price per 1M characters | RTX 4090 community ($248) | L4 community ($321) | AWS L4 box ($588) | |---|---|---|---| | $15 (OpenAI tts-1) | 16.5M | 21.4M | 39.2M | | $40 (ElevenLabs Flash) | 6.2M | 8.0M | 14.7M | | $80 (ElevenLabs v3) | 3.1M | 4.0M | 7.3M | | $4 (Polly Standard) | 62M | 80M | 147M | | $0.99 (hosted Kokoro) | 250M | 324M | 593M |
These figures are derived, not measured. They assume the GPU runs 24 hours a day, that one machine is enough and that throughput matches the benchmark below. They also ignore the costs listed later in this article.
Throughput is the other half of the calculation. The Kokoro model card says 1,000 input characters is about one minute of output, so 1M characters is roughly 16.7 hours of audio. A community benchmark on an RTX 4060 Ti reports 35x to 100x realtime, which implies roughly 0.17 to 0.48 GPU hours per million characters. Paying only for busy time, at $0.44 to $0.80 per hour, that is about $0.07 to $0.38 per million characters. These are illustrative figures.
The costs that are not on the invoice
These points are judgment, not sourced numbers:
- Setup and upkeep. Someone has to install the model, track license changes, update dependencies and fix failures.
- Idle time. A GPU that sits idle most of the day raises the effective cost per character, which the break-even table does not show.
- Scaling. Traffic spikes need capacity you either pay for in advance or wait for.
- Redundancy and monitoring. A single box is a single point of failure.
Licensing: open weights are not always commercial
Open does not always mean free to use commercially. The table lists the license as stated on each model's page.
| Model | License | Commercial use, as stated | |---|---|---| | Kokoro-82M | Apache-2.0 | Permissive; read the card | | Chatterbox | MIT | Permitted, according to Resemble's license FAQ | | Sesame CSM-1B | Apache-2.0 | Card says intended for research and educational purposes | | Qwen3-TTS | Apache-2.0 | Permissive on the page | | Voxtral TTS | CC BY-NC 4.0 | Non-commercial | | Breeze TTS 2 | BreezeBlue Research and Non-Commercial | Not for commercial use of self-hosted outputs | | Fish Audio S2-Pro | Fish Audio Research License | Separate license needed | | F5-TTS pretrained models | CC-BY-NC | Non-commercial | | XTTS-v2 | Coqui Public Model License | Read the license; the page states no commercial terms | | IndexTTS-2.5 | bilibili Model Use License Agreement | Contact the provider for commercial use |
Check each license file yourself before you commit to a model.
Quality gap: what blind listening tests show
The Artificial Analysis Speech Arena ranks models by blind listener votes. The snapshot below was read on 2026-10-17.
| Model | Elo | Rank range | Route | |---|---|---|---| | Eleven v4 Turbo | 1330 | 1 | Hosted | | Fish Audio Drama 3 Preview | 1244 | 8-10 | Open weights, check license | | Breeze TTS 2 | 1222 | 11-16 | Open weights, non-commercial | | Kokoro-82M v1.0 | about 1061 | 52-63 | Open weights, Apache-2.0 | | Chatterbox | 1025 | 71-78 | Open weights, MIT |
The top of the arena is hosted, and open models with permissive licenses sit lower on this snapshot. Elo measures listener preference, not fit for your text. Snapshots drift.
Privacy, latency and compliance
Self-hosting keeps text and audio on machines you control, which matters for some data. Latency depends on your network and hardware, so measure it yourself rather than relying on vendor claims.
Compliance applies whichever route you choose. The European Commission's code of practice on AI-generated content notes that Article 50 transparency obligations have applied since 2 August 2026. Check whether it applies to what you publish. This is not legal advice.
Which should you choose?
- Choose self-hosting if you have steady, high volume, often tens of millions of characters a month, and you can license a model that allows your use.
- Choose a hosted API if your volume is low or spiky, you want no GPU operations, and a prebuilt voice library is enough.
- Choose a hosted studio if you need more than speech, such as dialogue, speech to text, custom voices, images or music.
Where OndaLabs fits
OndaLabs is the hosted, no-operations option. It offers text to speech, two-speaker dialogue, speech to text, custom voices, image generation and music generation in one studio. Speech to text costs 50 credits per minute and is included on the free plan. It has 30 prebuilt voices usable in every supported language, and 37 languages have dedicated pages.
Plans are credit-based. Free is $0 with 2,000 credits per month, about 2 minutes. Starter is $9 with 170,000 credits, about 189 minutes, Onda Flash and commercial use. Creator is $22 with 400,000 credits, Pro is $49 with 900,000 and Business is $199 with 3,750,000. Top-ups cost $5 for 100,000 credits or $24 for 500,000. Raw API prices can be lower; the trade is a studio with no GPU to manage. See the pricing page, text to speech or speech to text for details.
For the open models behind these numbers, see the best open source text to speech models, Kokoro TTS explained and Chatterbox TTS explained.
Frequently asked questions
Is self-hosting text to speech cheaper than an API?
It can be, but only at high, steady volume. A GPU rented around the clock costs about $248 to $588 a month, so a machine that is busy for a small share of the month can cost more per character than a hosted API. Run the break-even formula with your own volume before you decide.
At what volume does self-hosting TTS break even?
Against a $15 per million character API, break-even falls at about 16.5 million characters a month on a community RTX 4090, and about 39 million on an AWS L4 instance. Against $0.99 per million for hosted Kokoro, break-even is in the hundreds of millions. These are derived figures that assume a 24-hour GPU and one machine.
Can I run TTS on a CPU instead of a GPU?
Yes for some models. Kokoro has a community CPU Docker image and ONNX builds of 86 MB to 326 MB, and Chatterbox-Nano runs on CPU according to its README. The authors of Kokoro do not state a minimum, so test speed on your own machine.
What are the hidden costs of self-hosted TTS?
The main hidden costs are setup, upkeep, idle GPU time, scaling for traffic spikes, monitoring and redundancy. None is priced in the sources used here, so estimate them against your own team's time.
Which open source TTS models are licensed for commercial use?
Models whose pages state Apache-2.0 or MIT, such as Kokoro-82M, Chatterbox, Qwen3-TTS, Orpheus and Dia, are permissive on paper. Voxtral TTS, Breeze TTS 2, Fish Audio S2-Pro and the F5-TTS pretrained models are not, and XTTS-v2 requires you to read the CPML. Check each license file before you commit.
What do hosted TTS APIs charge per million characters?
List prices run from $4 for Amazon Polly Standard and $15 for OpenAI tts-1 up to $40 for ElevenLabs Flash and $80 for ElevenLabs Multilingual v2 or v3. Third-party hosts price open models far lower, with DeepInfra listing Kokoro at $0.99. Prices change, so check each page before you budget.