Research-backed calculator guide
STT vs TTS Cost per Voice Call: Price the Talk–Listen Mix, Not Just Minutes
Learn how to calculate speech-to-text and text-to-speech cost per voice call by separating caller audio, agent talk time, characters, rounding, and excluded stack costs.
Quick answer
To calculate speech-to-text and text-to-speech cost per voice call, price the two meters separately:
call speech cost = (billable STT audio minutes × STT rate) + (billable TTS characters × TTS rate).
Do not multiply the whole call length by a blended speech rate unless the vendor explicitly bills that way. STT is commonly metered by audio duration, while TTS is commonly metered by characters or tokens. Google Cloud, for example, describes Speech-to-Text as monthly audio processed in one-second increments and Text-to-Speech as input characters, including spaces and newline characters. [1] [2]
For a worked five-minute call, assume two minutes of caller speech, 1.75 minutes of agent speech, 150 spoken words per agent minute, and seven billable characters per word. At the observed Google Cloud list rates of $0.016 per STT minute and $4 per million WaveNet characters, the speech-only estimate is about $0.0394 per call when STT receives only two minutes of caller audio. If your streaming design sends all five connected minutes to STT, the same example becomes $0.0874 per call. Both figures exclude the LLM, telephony, orchestration, hosting, storage, and other features.
Those are estimates, not a vendor quote. The correct answer for your system depends on the audio you actually submit, the voice output you generate, the model tier, rounding, free allowance, region, and whether your provider bundles layers. Recheck the rate card on the day you budget or reconcile an invoice; the prices and model catalogs can change.
What “per call” needs to mean
A call has at least three different clocks. Connected time is the elapsed time between answer and hang-up. Caller-audio time is the audio that your recognizer receives from the customer. Agent-talk time is the amount of synthesized output sent to the voice engine. Silence, hold music, interruptions, and barge-in behavior determine how those clocks relate.
That distinction matters because a five-minute call does not necessarily create five minutes of spoken input or five minutes of synthesized output. A quiet caller may create little STT speech but still keep a real-time stream open. Conversely, an implementation that submits a continuous channel can be charged for processed silence even when the person is not speaking. Google documents that the amount successfully processed is the billing basis and that each audio channel is billed separately. [1]
TTS has a different denominator. Google says its character count includes spaces and newline characters, and SSML tags are also included except for the specified exception. [2] A reply that sounds like 20 seconds of speech can therefore have a different cost from another 20-second reply if one contains more words, markup, or boilerplate. This is why “cost per minute” is often a derived metric rather than the provider’s native meter.
A useful internal ledger should retain, per call, the provider, model, start and end timestamps, submitted STT seconds, audio channels, generated TTS characters, and any add-on flags. Add the LLM input and output tokens separately. That record lets finance reproduce the estimate instead of trusting a dashboard’s blended average.
The two-meter formula
Use this base model for a componentized voice stack:
STT cost = billable STT seconds / 60 × STT price per minute
TTS cost = billable TTS characters × TTS price per character
speech subtotal = STT cost + TTS cost
If a provider publishes an hourly price, convert it once:
price per minute = price per hour / 60
price per character = price per 1,000,000 characters / 1,000,000
Then apply the provider’s rounding rule. Azure states that Speech-to-Text hours are measured from the audio sent to the service and billed in one-second increments; its Text-to-Speech usage is billed per character. The public Azure page also labels displayed prices as estimates rather than actual quotes and warns that agreement, purchase date, region, and currency can change the final amount. [3]
Do not silently mix real-time and batch prices. The same vendor may discount asynchronous processing or offer a different model. Deepgram’s pricing explainer describes the common split: STT by audio minutes, TTS by generated characters, and voice-agent platforms by conversation minutes or concurrency. It recommends converting every layer to a common workload before deciding which option is cheaper. [4]
Worked cost example: five-minute call
The following example uses public list rates observed on 2026-11-02. It is intentionally speech-only so the calculation is inspectable. The Google STT rate used here is the V2 Standard line of $0.016 per minute for the first monthly tier. The TTS rate is the WaveNet line of $4 per million characters after the listed free allowance. [1] [2]
| Step | Assumption or input | Formula | Output |
|---|---|---|---|
| 1 | Connected call length | Given | 5.00 minutes |
| 2 | Caller speaks during 40% of the call | 5.00 × 40% | 2.00 STT minutes |
| 3 | Agent speaks during 35% of the call | 5.00 × 35% | 1.75 TTS minutes |
| 4 | Agent pace and character density | 1.75 × 150 words × 7 characters | 1,837.5, or 1,838 characters |
| 5 | STT, active-audio case | 2.00 × $0.016 | $0.0320 |
| 6 | TTS, WaveNet list rate | 1,838 × $4 / 1,000,000 | $0.0074 |
| 7 | Speech subtotal, active-audio case | $0.0320 + $0.0074 | $0.0394 per call |
| 8 | STT, full five-minute stream case | 5.00 × $0.016 | $0.0800 |
| 9 | Speech subtotal, full-stream case | $0.0800 + $0.0074 | $0.0874 per call |
The table makes the key assumption visible: the TTS line is driven by what the agent says, not by the total call duration. The two STT totals show why your media pipeline matters. If voice activity detection removes silence before submission, the active-audio case may better describe the meter. If you send a continuous real-time stream for the entire connected call, budget the full-stream case unless the contract says otherwise.
The example also excludes free-tier offsets. If your account has unused free characters or minutes, the cash invoice may be lower during that billing period. I exclude them here so the marginal list-rate calculation remains comparable. It also excludes taxes, discounts, commitment tiers, retries, duplicate requests, diarization, redaction, language identification, storage, telephony, platform fees, and the LLM.
At 10,000 calls per month, the speech-only range from this call shape would be $394 to $874 per month before those excluded lines. That is simple multiplication of the example, not a forecast of your production bill. If the call mix changes, calculate each segment separately rather than multiplying one average by all traffic.
Why the talk–listen mix changes the answer
A voice agent can spend most of a call listening, speaking, or waiting. Those shapes stress different meters:
- Listen-heavy: STT minutes rise, while TTS characters remain modest. This can happen when callers explain a problem at length.
- Talk-heavy: TTS characters rise. Long confirmations, verbose answers, and repeated prompts can dominate even when the call is short.
- Silence-heavy: Connected minutes rise. A continuous stream or platform-level per-minute fee may continue while the caller is thinking or on hold.
- Interruption-heavy: TTS output may be generated and then cut off. Whether cancelled audio is billed depends on the provider and when the request is committed; do not assume cancellation is free.
AssemblyAI’s 2026 voice-agent pricing analysis illustrates why a per-layer estimate needs separate lines: its example treats streaming STT as one rate, then adds the LLM, voice generation, hosting, and carrier minutes. It reports its cited STT rate as $0.45 per hour billed per second and explicitly says that speech, LLM, voice, infrastructure, and telephony can land on different meters. [5] Use that structure as a bookkeeping pattern, not as a universal price.
For a fair comparison, record both percentages and raw units. “The agent talks 35% of the call” is useful for scenario design, but “1,838 characters were synthesized” is what lets you reconcile the TTS invoice. Likewise, “the caller spoke for 40%” is not enough if the recognizer received a five-minute channel with silence.
Scaling from one call to a monthly budget
After estimating one call, segment your traffic by call shape. A practical monthly formula is:
monthly speech cost = sum over call segments(
calls × STT billable minutes × STT rate
+ calls × TTS characters × TTS character rate
)
Keep at least three segments: short support calls, ordinary calls, and long or transferred calls. For each segment, store P50 and P95 duration if you have enough data. A single mean can hide a long-tail bill when a small group of calls holds streams open or triggers extra turns.
Then add the other layers as separate calculations. LLM cost usually depends on input and output tokens, including how much conversation history is resent. Telephony may be billed by connected minutes, destination, trunk, or channel. An orchestration platform may add its own per-minute charge or a monthly minimum. Recording and transcript retention add storage and egress. Human review, monitoring, and retries are operating costs even when they do not appear on the STT or TTS rate card.
Use the site’s model pricing comparison when the question is which published model rates to compare, not when you need to hide different speech meters inside one average. Use the AI API invoice reconciliation calculator after launch to match your request-level ledger to the provider’s invoice. For production telemetry and alerting, the AI observability ROI calculator can help you evaluate the monitoring layer separately from speech usage.
Run your scenario
Turn this framework into an editable estimate.
Use dated, source-linked assumptions and see cost per request, successful task and month.
Common mistakes and limitations
Using call minutes as TTS minutes. TTS is often character- or token-based. Convert the agent’s actual output instead of assuming every connected minute contains a fixed amount of speech.
Counting only audible caller speech for streaming STT. The provider may meter submitted audio, not detected words. Confirm whether silence removal happens before the API and whether channels are billed separately.
Quoting a bundled platform rate as the whole stack. A per-minute agent price may exclude the LLM, carrier, voice, add-ons, or overages. Read what the rate includes before comparing it with a raw STT rate.
Ignoring short-request rounding and minimums. A one-second increment, a 15-second minimum, and minute rounding produce different costs for short utterances. Test the actual request boundaries.
Treating prices as permanent. This article records observations on 2026-11-02. Product names, preview rates, free allowances, regional prices, and contract discounts can change. Vendor pages should be the final check before purchase or invoice dispute.
FAQ
Is speech-to-text or text-to-speech usually more expensive per call?
There is no universal winner because the meters differ. STT is usually tied to submitted audio duration, while TTS is tied to generated text volume or tokens. A long caller monologue raises STT cost; a verbose agent raises TTS cost. Compare the actual billable units for your call shape instead of comparing the sticker prices alone.
How do I calculate STT TTS cost for a short voice-bot call?
Measure submitted STT seconds and generated TTS characters for the call. Multiply each by its matching provider rate, apply rounding and minimums, and add the two results. If you do not have logs yet, create scenarios for caller speech share, agent talk share, words per minute, characters per word, and whether silence is submitted.
Does silence cost money in a voice AI call?
It can. If the recognizer processes a continuous stream, the submitted audio duration can include silence. A platform that charges connected conversation minutes may also continue charging during pauses or hold time. Whether silence is removed, ignored, or billed is provider- and architecture-specific, so document it as an assumption and verify it against usage records.
Should I use a per-minute voice-agent price or add STT and TTS myself?
Use a per-minute price when the platform’s bundle is valuable and its inclusions are clear. Assemble the layers when you need control over models, prompts, routing, or carrier choice. Compare both on the same recorded call sample and include platform fees, LLM usage, telephony, add-ons, and engineering effort. A lower STT line alone does not prove a lower finished-call cost.
How should I price an interruption or barge-in?
Track generated TTS characters before cancellation, the time at which the provider accepts the synthesis request, and any replacement response. Some providers may bill generated or committed output even when playback stops. Treat cancelled audio as an open billing question until the provider’s documentation or invoice confirms the rule; do not assume every interruption is free.
What should I include in a finance-ready per-call ledger?
Store call ID, provider and model, connected seconds, STT submitted seconds, channel count, TTS characters, LLM input and output tokens, telephony minutes, platform fees, retries, add-ons, credits, and outcome status. Keep the raw usage units alongside dollar amounts. This makes a blended average explainable and lets you reconcile a monthly invoice without guessing which layer moved.
Primary sources checked
Pricing and product behavior can change. These sources support the time-sensitive claims in this guide; verify current provider terms before committing spend.