Blog/Generating media
5 min read

Streaming vs Batch Text to Speech for a Voice Agent

Streaming or batch text to speech for a voice agent? Which jobs need live audio, which need a finished file, and how to run the batch side from your agent.

Streaming vs Batch Text to Speech for a Voice Agent

Render speech for an agent without running a voice server. Paste this into your agent:

Set up https://monid.ai/SKILL.md, and then use Monid to list the available ElevenLabs voices, then render "Your order has shipped and arrives Thursday." with one of them on the cheapest model and give me the audio link.

One prompt picks a voice and renders the line. 1 min setup · 1-3 hrs saved.

Streaming text to speech starts playing audio before the sentence is finished. Batch text to speech returns one finished file when it is done. A voice agent on a phone line needs the first, and a narration job needs the second, and most of the confusion in this topic comes from buying one while needing the other. This guide splits the two by job, shows what a batch endpoint returns and how long Monid lists it as taking, and runs the batch side from your agent. It runs through Monid, the OpenRouter for agent tools: one key, one balance, every tool priced per call.

You are on the Monid blog, Monid sells the batch endpoints used below, and Gradium is a content partner. Gradium is not in the Monid catalogue, and what we say about it comes from its public site.

What is the easiest way to render text to speech from an agent?

Monid. Install it once, add a key, and your agent can discover, inspect and run text to speech endpoints from more than one provider on the same key and the same balance.

  • Pay per call. Each render is billed on its own, by the character. ElevenLabs text to speech on the Flash model is $0.04 per 1,000 characters (Verified 2026-10-16 on the speech tools page). Buy calls as you need them: no monthly plan and no minimum top-up. Discovery, inspection and the voice list are free.
  • One install, every voice vendor. The same key calls ElevenLabs and MiniMax speech, and every other tool on Monid. A second voice vendor is one more call, not one more signup.
  • Lives inside your agent. Install the CLI, add your key, run the prompt above, and the tool is there whenever your agent needs it, with nothing to keep running. Your agent reads SKILL.md and learns the rest, so setup is about a minute.

Rendering a finished file is the job these endpoints do. Live conversation is a different job, and the next section is about telling them apart.

📖 See also ElevenLabs Alternatives: Test Other Voices on One Key

Do you need streaming or batch text to speech for a voice agent?

Streaming for anything where a person is listening live, batch for everything where the audio is made first and played later.

The difference is a contract. A streaming service sends audio in pieces while it is still generating, so playback starts after the first piece and the caller can interrupt. A batch service takes the whole text, generates the whole recording, stores it and answers with a link. Nothing is playable until the call completes, because the answer is the file.

JobWho is waitingFits
Phone or voice assistant that answers speechA person, mid-conversationStreaming
Interruptible agent that stops when the caller talksA person, mid-conversationStreaming
Voicemail, notification or alert read out laterNobodyBatch
Narration of articles, product pages or a digestNobodyBatch
Audio track for a video, rendered per clipA pipelineBatch
Draft a script, listen, edit, render againYou, between rendersBatch

The test is one question: is a human listening while the text is still being produced? If yes, you need a streaming layer. If the answer is "later" or "a pipeline", a request and response endpoint is simpler to run and simpler to bill.

Where the conversation side is bought

For a live conversation the number to compare is time to first audio, not total time. Gradium is a voice AI provider built for that job, and its public benchmark page reports a median perceived time to first audio of 214 ms on the Coval text to speech leaderboard, read on 8 September 2026 with 480 samples per model across 26 models. Those are Gradium's figures from its own page, and we did not re-test them. Their documentation covers the streaming side.

Where the rendering side is bought

The rendering side is what Monid sells: one request, one finished MP3, a signed link and a per-character line on the bill. Giving a product a lifelike voice shows that shape from the product side.

How long does a batch text to speech call take?

A few seconds. monid inspect lists a median run time of 3,678 ms and a 95th percentile of 4,317 ms for ElevenLabs text to speech, and 3,328 ms and 3,678 ms for MiniMax text to speech (listed figures, 2026-10-16). Those are times to a complete file, not times to first audio.

Why there is no first audio on a batch endpoint

The run does four things in order: it generates the audio, saves it on Monid cloud, creates a signed download link, and returns the run with the audio object. The caller gets nothing playable before the last step. MiniMax's endpoint states it directly: streaming and the WebSocket surface are not exposed, and each run returns one complete audio file. Its stream field is fixed to false.

That is a property of the shape and not a defect of any vendor. ElevenLabs, Google and OpenAI also offer streaming text to speech, which the autosuggest queries for each of them show people looking for. A streaming API and a batch endpoint answer different questions, and the same vendor can sell both.

What the listed time means for an agent

Treat a batch call as a task, not a turn. The call goes out, the agent works or waits a few seconds, and the link comes back. That suits a workflow that sends a message or builds a file, and not a reply a caller is waiting on.

How do you run batch text to speech from an agent?

Discover the speech endpoints, read each schema and rate for free, list the voices, then render. Grab an API key at app.monid.ai first.

For agents

Paste this to your agent and hand it the key:

set up https://monid.ai/SKILL.md

It learns the whole discover, inspect, run workflow itself. More in the agent quickstart.

For humans

npm install -g @monid-ai/cli
monid keys add -k <your-api-key> -l main

Step 1. See which endpoints answer and what they bill

monid discover -q "text to speech voice generation"
monid inspect -p elevenlabs -e /text-to-speech

Discovery lists the speech providers with their billing shape. Inspection returns the full schema, the model_id choices and the rate for each. Neither bills.

Step 2. Pick a voice

monid run -p elevenlabs -e /voices -w > voices.json

The voice list is free. We ran it on 2026-10-16: it returned 132 voices, 21 premade and 111 professional, billed 1 unit at $0.00 (Verified 2026-10-16), and the response was about 83,000 characters, so write it to a file and filter it. Each voice has a voice_id, name, category, description, preview_url and a labels object with accent, age, descriptive, gender, language and use_case. The first record was "Roger - Laid-Back, Casual, Resonant", an American, middle aged, male English voice labelled conversational.

Step 3. Render on the model that fits

monid run -p elevenlabs -e /text-to-speech -w -i '{
  "text": "Your order has shipped and arrives Thursday.",
  "model_id": "eleven_flash_v2_5"
}'

The endpoint takes text of 1 to 5,000 characters, a model_id and a voice_id. Flash is listed as the half-price, low-latency model, Multilingual v2 as the highest quality and Eleven v3 as the most expressive. Without a voice_id it uses the default voice, 21m00Tcm4TlvDq8ikWAM. The run output carries an audio object with a signed download_link, the content_type and the billed character_count.

Step 4. Render the same line on a second provider

monid run -p minimax -e /v1/t2a_v2 -w -i '{"text": "Your order has shipped."}'

That is another provider's audio on the same key and balance. Running the whole short-form chain, script to audio to video, is written out in automating short-form AI video.

Give this to your agent

$Set up https://monid.ai/SKILL.md, and then use Monid to render this script to speech with the Flash model, split it into runs under 5000 characters, and give me the download links and the characters billed for each.

What does a batch text to speech call cost?

The bill is a count you can make before you call, because the unit is the character, and the speech tools page shows the current rates. ElevenLabs text to speech on Flash is $0.04 per 1,000 characters, Multilingual v2 and Eleven v3 are $0.08 per 1,000 characters, and MiniMax turbo models are $60.00 per million characters with hd models at $100.00 per million (Verified 2026-10-16 with monid inspect).

Budgeting by arithmetic

Verified 2026-10-16 rates, worked through. A 5,000 character script, the longest the ElevenLabs endpoint takes in one run, is 5 times the per-1,000 rate: $0.20 on Flash and $0.40 on Multilingual v2 or Eleven v3. On MiniMax's turbo models, the same 5,000 characters is $0.30, and $0.50 on hd models. A 400-description overnight batch at 300 characters each is 120,000 characters, which is $4.80 on Flash. Convert every provider to the same unit before you compare them.

The two details that change the bill

Changing model_id changes the rate, so the model is a budget decision as well as a quality one. MiniMax settles on its own reported character count, which can differ slightly from the length of the text you sent. A rejected or failed synthesis bills nothing on MiniMax, and an unknown voice_id on ElevenLabs returns a completed run with the provider error and no charge.

What goes wrong when you use batch text to speech in a live conversation?

Four things, and none of them is fixed by a faster model.

The caller hears silence

The file only exists once the call completes, so a spoken reply cannot start earlier than the whole run. At the listed median of 3,678 ms for ElevenLabs, that is more than three and a half seconds before the first sound, on every turn.

Splitting the reply makes it worse

A common workaround is to cut the reply into short sentences and send each as its own run so playback can begin on the first one. The first sound does come sooner, but every fragment is a full run with its own time, its own link and its own charge. Five fragments run one after another at the listed median come to about 18.4 seconds of total run time, against 3.7 for one call, and the pauses between fragments fall inside the sentence. Running them in parallel shortens the total and leaves you ordering five files. Streaming is the tool for this; a pile of small batch calls is not.

The signed ElevenLabs link is valid for about an hour and the file is kept for 7 days; the MiniMax link expires after 24 hours. A pipeline that stores the URL has stored nothing. Download the bytes in the same job that rendered them and put them in your own bucket.

A long script is several runs

ElevenLabs text to speech takes 5,000 characters per run and MiniMax 10,000. Split on sentence boundaries and render the parts as separate calls. For scenes with several speakers, the dialogue endpoint takes ordered text and voice_id pairs and returns one continuous file.

Which endpoint should I use for which job?

EndpointWhat it doesInputBillingPrice (Verified 2026-10-16)
elevenlabs/voicesLists voices with labels and previewsNoneFree$0.00
elevenlabs/text-to-speechScript to MP3, one voicetext, voice_id, model_idPer 1,000 characters, by model$0.04 Flash
elevenlabs/v1/text-to-dialogueSeveral speakers in one fileinputs of text and voice_idPer 1,000 characters$0.08
elevenlabs/v1/speech-to-speechRecast a recording in another voiceaudio_url, voice_idPer minute of input audio$0.12
elevenlabs/v1/speech-to-textTranscribe audio or video from a URLA file URLPer hour of audio$0.22
minimax/v1/t2a_v2Script to audio, a second providertext, model, voice_settingPer million characters$60.00 turbo

Prices Verified 2026-10-16 with monid discover and monid inspect. The text to speech rows show the lowest listed rate; Multilingual v2 and Eleven v3 are twice the Flash rate, and MiniMax hd models are $100.00 per million characters. None of these endpoints streams. Transcription is the listening half of a voice agent, and like the rest it returns when the file is done.

When is another route a better fit?

A person is on the line. Use a streaming voice layer. A finished-file endpoint cannot produce audio before it has produced all of it.

Your agent only writes text. A support agent in a chat window, a coding agent or a research agent that outputs a report gains nothing from speech. If the output is read, the right number of text to speech calls is zero.

You need one voiceover, once. A web editor and a download button beat wiring an endpoint, splitting scripts and storing links. Wiring pays back over hundreds of calls, not three.

You run very high steady volume. Past a point a model on your own hardware costs less than any per-call rate, and the audio never leaves your network.

And the disclosure: we resell the batch endpoints and we do not claim they are the right tool for a conversation. What we sell is the buying model for the rendering half: one key, one balance, and a second provider one call away.

Conclusion

Streaming and batch text to speech are two purchases, not two settings of one. If a human is listening while the text is still being produced, buy a streaming layer and judge it on time to first audio. If the audio is made first and played later, a request and response endpoint is the simpler tool, and Monid runs it from your agent with each render billed on its own.

Two things matter more than the choice of vendor. A batch call has no first audio, so no model swap turns it into a stream, and splitting a reply into fragments only multiplies the runs. And the link in the output expires, so download the bytes in the same job.

How we estimated the time saved: wiring one voice vendor, with its account, key, SDK and billing, costs roughly 1 to 3 hours, and the call-per-render model removes that for each extra provider. The 1 minute is the install, key and first call once you already have a Monid key.

Free next step: run monid discover -q "text to speech voice generation", monid inspect -p elevenlabs -e /text-to-speech, then monid run -p elevenlabs -e /voices -w. Listing voices bills $0.00 (Verified 2026-10-16). Start at Monid.

FAQ

Can I use a batch text to speech API for a phone voice agent?

No, not for the live reply. A batch endpoint returns one finished file, so the caller hears nothing until the whole run completes, and monid inspect lists a median of 3,678 ms for ElevenLabs text to speech. Phone agents need a streaming voice layer. Batch endpoints are for audio made first and played later.

What is the difference between streaming and batch text to speech?

Streaming sends audio in pieces while it is still being generated, so playback starts early and the caller can interrupt. Batch generates the whole recording, stores it and returns a link. Streaming is judged on time to first audio, and batch has no such number because nothing is playable before the end.

Will a faster text to speech model fix the latency?

Not for a live conversation. A faster model shortens the run, but a batch call still returns nothing playable until the file is complete. Switching to the Flash model on ElevenLabs halves the rate per character and is listed as the low-latency option, which helps rendering jobs, not turn-taking.

Which is the best text to speech API in 2026?

It depends on whether you are buying voice quality, language coverage or billing shape, so the honest answer is a comparison and not a name. Our side-by-side of the 2026 field works through it. This guide asks a different question: whether you need a stream or a finished file.

How do I add text to speech to an AI agent?

Call it through the same tool layer as your other endpoints, so the voice is not a separate integration with its own key and plan. Install the Monid CLI, add a key, and the agent discovers the speech endpoints, reads the schema and renders. The skill prompt above is the short version.

Published August 2026.

streaming text to speechtext to speech apivoice agentstts latencyai agents