Choosing a Text-to-Speech API for Long Documents
Choosing a Text-to-Speech API for Long Documents
Most text-to-speech APIs are built for short snippets: a notification, a voice prompt, a single line of dialogue. Narrating a 40-page report, a long article, or a full chapter is a different problem. The text is too long for a single synchronous call, the output needs to arrive as one continuous file, and the cost has to stay predictable across thousands of characters. This guide covers what actually matters when you're working at that length, and how to evaluate a service against it.
The core problem with long-form synthesis
Generating speech is compute-intensive, and it scales with input length. A naive API that tries to render a whole book in one blocking request will either time out or leave you staring at a hung connection. The services that handle long form well share a common architecture:
- They accept the job asynchronously. You submit the text, get an ID back immediately, and the work happens in the background.
- They split the text into chunks and synthesise those chunks in parallel, so a long document doesn't take proportionally longer than a short one.
- They stitch the chunks back together into a single audio file, so you're not left reassembling fragments yourself.
If an API forces you to manually break text into sentences, fire dozens of separate requests, and concatenate the results, that work — and the bugs that come with it — lands on you.
What to look for
Async jobs with status polling
The non-negotiable feature. You want to POST your text once and receive a job ID, then poll a status endpoint until the audio is ready. NarrateAI follows this pattern exactly: a single POST /v1/tts/async returns a job immediately, and GET /v1/tts/async/{job_id} reports progress — total chunks, completed chunks, and a percentage — until the file is done.
{
"status": "processing",
"total_chunks": 4,
"completed_chunks": 2,
"total_chars": 1240,
"progress_percent": 50.0
}
A visible progress_percent matters more than it sounds: for a long job it's the difference between a progress bar in your own UI and a black box.
Generous per-job limits
Check the maximum characters per job. A limit measured in hundreds of characters means you'll be orchestrating many jobs for a single document. NarrateAI accepts up to 100,000 characters in one job — long enough that most articles and report sections fit in a single submission, and chapters split cleanly across a handful.
One stitched file, not fragments
Make sure the output is a single audio file. Receiving one stitched WAV with a reported duration_seconds is far less work than receiving a list of clips you have to join, normalise, and crossfade yourself.
Predictable, character-based pricing
This is where long-form usage gets expensive if you're not careful. Per-minute pricing is hard to estimate before you've generated the audio, because you don't know the duration until it's rendered. Per-character pricing lets you calculate cost directly from your input length. NarrateAI prices per character and enforces monthly quotas per key, so a runaway script can't produce a surprise bill. Plans run from a free Dev tier (10,000 characters a month, plus a 125,000-character bonus on signup) up through Creator at 2.45M characters and Pro at 14.9M characters a month, with top-up packs available when you need more.
As a rough rule of thumb, 1,000 characters is on the order of a minute of audio, so you can estimate a document's runtime — and its cost — from a word count before you ever submit it.
Multilingual coverage at one price
If your documents span languages, you don't want a separate model or a surcharge for each one. NarrateAI supports 31 languages — English, French, German, Spanish, Japanese, Arabic, Hindi, and more — all at the same rate, selected with a single lang parameter.
Sensible file retention
Long jobs produce large files, and most APIs don't store them forever. NarrateAI keeps finished audio for seven days and serves it through a presigned URL valid for one hour, so plan to download and archive anything you want to keep.
A quick evaluation checklist
When comparing options for long-form work, ask:
- Does it accept jobs asynchronously with status polling?
- What's the maximum characters per job?
- Does it return one stitched file or fragments?
- Is pricing per character (predictable) or per minute (not)?
- Are there monthly quotas that cap spend?
- Does it cover all the languages you need at one price?
- How long are files retained, and how are they delivered?
Where NarrateAI lands
NarrateAI was built around long-form content rather than short prompts: async jobs, parallel chunking, stitched output, per-character pricing, monthly quota caps, and 31 languages at a flat rate. If you're narrating documents, articles, or books, that combination removes most of the plumbing you'd otherwise write yourself. Start with a free key and run your longest document through it before committing.
Get started
Try NarrateAI free
125,000 characters on signup. No credit card required.
Get your API key →