One Turn, Three Billing Units
A single callbot turn runs through speech-to-text (STT), an LLM, and text-to-speech (TTS) — and each is billed on a different unit. Google Cloud's Speech-to-Text V2 Standard model charges per minute of audio, stepping down in four tiers from $0.016/min (0–500K minutes a month) to $0.004/min (above 2M minutes). The same vendor's legacy TTS bills per character: WaveNet voices run $4 per million characters while Studio voices run $160 per million — a 40x spread — and the newer Gemini-TTS line switches again, to separate per-token rates for input text tokens and output audio tokens.
One Blended Number Hides Which Stage Moved
Google Cloud's own Text-to-Speech price list already carries a dated change. Gemini 3.8 Flash TTS (Preview) bills $0.50 per million input text tokens and $9 per million output audio tokens through December 31, 2026 — then exactly doubles to $1.00 and $18 starting January 1, 2027. Flash-Lite follows the same pattern: input $0.50 to $1.00, output $6 to $12. A team tracking cost per turn as one blended dollar figure won't notice this with unchanged traffic — they'll find it in the invoice after the cutover date has already passed.
From Design to Operations: A Cost Attribution Checklist for the Callbot Loop
(a) Planning and target numbers: break the cost down by stage before setting a budget. A 4-minute average call on Standard STT runs $0.064; an 8-turn call with 150-character responses (1,200 characters total) on WaveNet TTS runs $0.0048 — treat the combined ceiling, roughly $0.07 per call, as a provisional cap. Keep LLM token cost as a separate variable, since model price sheets change far more often than voice pricing.
(b) Four failure patterns recur: summing per-minute and per-token logs into one table without converting units first; never calendaring a price sheet's effective date, so a cost spike with flat traffic gets blamed on a code deploy instead; retried STT or TTS calls showing up in latency logs but not getting double-counted in cost logs, which understates true per-turn cost; and running a Preview-tier model in production, so the entire pricing structure shifts the day it reaches GA.
(b') Build two recovery branches. Notify the operations team automatically 30 days before a price sheet's effective date, and run the recalculated cost against the new rate in staging first. When per-call voice cost crosses 120% of the cap, let the budget circuit breaker auto-downgrade from Studio or Gemini-TTS to a cheaper voice like WaveNet, and log that call's audio-quality score separately so you can track how much the downgrade cost in quality.
(c) The operations checklist starts with five log fields: stage (stt/llm/tts), vendor, model tier, billing unit (minute/character/token), and computed cost. Sum these five fields per call to surface cost per turn and per call, and separately verify that PII masking isn't inflating the token count measured before the mask was applied.
(d) Continuous improvement means re-measuring each stage's share of cost weekly. If the same stage tops the list two weeks running, flag it as a candidate for a voice or model-tier swap, and put a cost-regression gate next to the latency-regression gate so a deploy is blocked whenever the per-turn cost increase from a new model or voice crosses the agreed ceiling.
Takeaways at a Glance
The callbot loop is billed in three different units — minutes, characters, tokens — so tracking cost per turn as one blended number means a scheduled price change like a January 1 cutover only surfaces in next month's invoice. Log stage, vendor, and billing unit, and add an auto-downgrade branch at 120% of the cost cap, and call quality and budget both survive the day the price sheet changes.
References
Speech-to-Text pricing — Google Cloud
Text-to-Speech pricing — Google Cloud
Ask AI about this article
The assistant has read this article. Ask anything — it answers from the text and says so when something isn't in it.
Loading the chat…