5 min read

Published

The Real Cost of a Voice Agent Minute

Our infrastructure cost fell from $0.26 to $0.10 per minute. How to meter each component, compare operating costs, and protect conversation quality.

At Spyne we took voice-agent infrastructure cost from $0.26 to $0.10 per minute, roughly a 62% reduction. The change came alongside our migration from Vapi to LiveKit and subsequent provider and pipeline tuning.

Those figures describe our deployment. They are not either platform’s list price, and they do not include the full engineering cost of building and operating the system. The useful part of the story is how to make the bill explainable enough to decide what to change.

Define the minute before comparing it

A connected call minute, a minute of generated speech and a minute of worker runtime are different units. An agent that speaks for twenty seconds during a sixty-second call has not necessarily bought sixty seconds of TTS. A transfer can keep more than one billable call leg alive.

For an infrastructure comparison, choose a denominator such as connected call minutes and keep it consistent across both deployments. Allocate billed costs for the same period, including failed attempts and idle capacity where applicable. Separately report cost per successful outcome: a cheaper call that loses the appointment is not an improvement.

Provider contracts decide rounding, minimum charges and which resources keep billing during silence. Check those details before multiplying a headline price by call duration.

Five components, five different meters

ComponentMeter to captureWhat a blended rate can hide
TelephonyBilled duration by call leg, destination and direction; number rentalTransfer legs, rounding, recording and carrier extras
Speech-to-textBilled audio or session durationSilence billing, minimums and duplicated streams
Language modelInput, cached input and output tokens by model and tierGrowing conversation history, tool schemas and retries
Text-to-speechBilled characters, tokens or generated audio, depending on providerAudio generated but discarded after an interruption
Runtime and orchestrationWorkers, media transport, platform charges, storage and observabilityIdle capacity, minimum commitments and separate cloud services

Self-hosting a worker does not make its runtime free. Include spare capacity and the surrounding media stack. If you use LiveKit Cloud, check its resource meters and billing as well as inference charges. A lightly used deployment can have a very different compute cost per minute from a busy one.

Reconcile the bill before tuning the agent

The accounting relationship is simple:

infrastructure cost per connected minute =
  allocated infrastructure spend / connected call minutes

cost per successful outcome =
  allocated spend / successful outcomes

The hard part is connecting usage to calls. Keep a call ID, tenant, use case, engine, model and provider alongside the meters. Preserve both estimated usage and reconciled billed cost; a missing usage event must not quietly count as a free call.

For LLMs, separate uncached input, cached input and output before applying their rates. A growing conversation can increase input usage on each turn even when answers stay short. For speech, distinguish generated audio from played audio, while charging according to what the provider actually bills.

This does not require leaving a managed platform. Vapi exposes component cost estimates and call cost fields. Inspect the data already available before assuming migration is the only way to understand the bill. Owning the pipeline gave us more control over instrumentation and execution; it was not the invention of itemized billing.

What to change, and what to protect

Removing a platform fee creates an obvious saving, but it also creates an operating responsibility. After that decision, tune the components with the largest measured contribution. Their order will vary by workload.

Voice selection. Compare TTS providers on real phone recordings. Some calls use narrowband audio; others preserve more detail. Listen for names, numbers, pronunciation and intelligibility as well as pleasantness. Measure task completion before assuming a cheaper voice is equivalent.

Model and context. Test a smaller model on routine turns. Trim redundant instructions and unused tool definitions. If you summarize long conversations, retain confirmed facts, tool results and unresolved commitments. Prompt caching can reduce repeated-prefix cost where the provider supports it; it does not make all conversation history free.

Generation controls. Output caps bound how much the model can generate, but a cap that truncates a booking confirmation or tool argument is a false economy. Service tiers change the cost and latency trade. These are among the controls I have exposed in the LiveKit Agents SDKs, and they need evaluation with the same task and response-time gates as a model change.

Non-conversation time. Use bounded idle and hold policies, maximum durations and explicit voicemail handling. Keep enough time for callers who need to find a document or read a number. An idle timeout that cuts them off improves the bill by failing the task.

Volume terms. Negotiate against measured usage and include minimum commitments in the comparison. A lower unit price can still produce a higher monthly bill at the volume you actually use.

Put an operating budget next to the saving

The observed difference between our two infrastructure rates is $0.16 per minute. Here is the arithmetic at illustrative volumes; these are not our traffic figures or a forecast of anyone else’s savings.

Monthly connected minutesAt $0.26/minAt $0.10/minDifference before additional operating costs
10,000$2,600$1,000$1,600
100,000$26,000$10,000$16,000
1,000,000$260,000$100,000$160,000

Subtract incremental engineering, on-call and maintenance costs, and amortise migration work over a realistic period. The break-even relationship is monthly additional operating cost divided by saving per minute, assuming the rates and quality hold at that volume. Avoid double-counting compute already included in the infrastructure rate.

This is why a managed platform can be the better economic choice at low volume, even when its per-minute fee looks larger.

Keep quality in the same report

Compare the same use cases, destinations and call-duration mix before and after a change. Put task completion, transfer success, premature interruptions and p95 response gap next to cost. Otherwise a shorter, less useful conversation can look like an optimization.

Some savings are worth spending back on turn-taking, reliable tool execution or a clearer voice. Ten cents was our result. Knowing which costs support a successful conversation is the part another team can reuse.

Written by

Software Engineer II at Spyne. I build production voice agents, telephony infrastructure, and developer tools, and contribute to the LiveKit Agents SDK.

Experience and open-source contributions →
Migrating Production Voice Agents from Vapi to LiveKitWe ran dealership voice agents on Vapi and now run them on LiveKit. What we did before the migration so it would not become a rewrite, and what it did to cost.Sep 2026Answering-Machine Detection Is Turn-Taking's Evil TwinBefore a voice agent can decide when to speak, it has to decide whether anyone is there. Why AMD is hard, and why you cannot test it by calling your own phone.Sep 2026Turn-Taking Is the Hardest Problem in Voice AICallers forgive a mediocre answer long before they forgive being interrupted. Notes on endpointing, latency and barge-in from real phone lines.Sep 2026
Continue exploringWriting indexAll writing.

Built for

The systems behind this post