Guides / speech to text cost
What transcription costs, and why tokens don't help you estimate it
Transcription and realtime audio bill per minute of audio rather than per token, so cost tracks how long the recording is and not how much was said. Rates differ elevenfold across models. Culpa, a local-first LLM cost, margin, and forecast ledger, prices each call from a versioned price book so a model change is visible immediately.
Why this happens
Every instinct built on token pricing misleads here. Audio models bill by the minute, which means cost is a property of duration rather than content, and the two come apart constantly. An hour-long meeting with four minutes of speech costs exactly what an hour of dense conversation costs. Silence bills at full price. A recording left running after everyone leaves bills at full price. That also breaks estimation, because you can't derive minutes from a token count and nothing in your existing cost model has a duration in it. The second thing worth knowing is how wide the price range is. Across published transcription and realtime models the cheapest and dearest differ by more than eleven times per minute, and the expensive end is realtime and translation rather than plain transcription, so the question is whether you need the answer as the person is still speaking.
What this usually looks like
- You budgeted transcription from token counts and the bill didn't match.
- Recordings include long stretches with no speech and you pay for them.
- Nobody compared the model you use to the cheapest one that would do.
- Audio spend grows with meeting length rather than with meeting value.
- A realtime model is used where a batch one would have been fine.
Free, no card, no account
Run the free Cost Leak Scan
It shows your most expensive conversation before you install anything.
Mistakes that cost the most
| Mistake | Why it hurts | Do instead |
|---|---|---|
| Estimating audio cost from tokens. | The unit is a minute, so a token count tells you nothing about the charge. | Estimate from minutes of audio, and measure your real average recording length. |
| Sending whole recordings including silence. | Every minute bills the same, so dead air costs what speech costs. | Trim silence before sending where the tooling allows it. |
| Using a realtime model for work that isn't realtime. | Realtime and translation rates sit at the expensive end of an elevenfold range. | Reserve realtime for cases where waiting for the recording to finish would break the product. |
| Picking the transcription model once and never revisiting it. | The spread between models is wide enough that the choice dominates every other saving. | Re-price your monthly minutes against the current model list before optimising anything else. |
Run this check tonight
- Work out your total minutes of audio last month, not your token count.
- Multiply those minutes by the cheapest capable model's rate and by your current one's.
- Measure the share of your audio that contains no speech.
- Check whether anything using a realtime model actually needs the answer in realtime.
Ten thousand hours of audio, three ways
Illustrative example
A modelled 10,000 hours of audio a month, which is 600,000 minutes, priced against OpenAI's published per-minute rates read 2026-08-05: gpt-4o-mini-transcribe at $0.003, Whisper at $0.006, and gpt-realtime-translate at $0.034. Every rate is published, the volume is modelled.
The model choice is worth $18,600.00 a month at this volume, which is more than any prompt engineering will ever return on the same workload. It's also the decision most likely to have been made once, early, by whoever wired up the first prototype.
Every number, with its confidence and source
| Figure | What it means | Confidence | Source |
|---|---|---|---|
| $18,600.00 per month | modelled difference between the cheapest and dearest transcription models on identical audio | calculated | OpenAI's pricing page, read 2026-08-05, publishes gpt-4o-mini-transcribe at $0.003 per minute and gpt-realtime-translate at $0.034 per minute. At a modelled 10,000 hours a month, which is 600,000 minutes, gives $1,800.00 against $20,400.00, a difference of $18,600.00 and a ratio of 11.33. Whisper at $0.006 gives $3,600.00. Rates are published, the volume is modelled. |
What a generic answer can’t know
The per-minute rates are public and the arithmetic is one multiplication. What isn't public is how many minutes you actually send, what share of them carry speech, and which features or customers generate them. Those decide the number, and none of them appear on a pricing page. Culpa prices every call from a versioned price book in exact decimal and carries whatever identifiers you attach, so audio spend lands beside model spend under the same feature and the same customer rather than in a separate tool. Set that against what those customers pay and a transcription feature reports margin rather than cost, which is the version of the question that decides whether it stays free.
Questions founders ask next
How is speech-to-text priced?
By the minute of audio, not by tokens. OpenAI's published transcription and realtime models run from $0.003 to $0.034 a minute, and Gemini's Live models price audio in and out separately per minute. Duration is the unit, so content length doesn't change the charge.
Does silence cost money?
Yes, at the full rate. Billing tracks elapsed audio, so an hour-long recording with four minutes of speech costs the same as an hour of dense conversation. Trimming silence before sending is one of the few reliable savings available here.
How much does the model choice matter?
More than anything else you can change. In the modelled example 600,000 minutes a month costs $1,800.00 on gpt-4o-mini-transcribe and $20,400.00 on gpt-realtime-translate, an 11.33x spread and an $18,600.00 monthly difference on identical audio.
Can I estimate audio cost from my token usage?
No, and that's the trap. The unit is a minute and nothing in a token count implies a duration. Estimate from minutes of audio, which means measuring your real recording lengths rather than inferring them from anything you already track.
On your infrastructure
Culpa runs on your infrastructure. Your prompts and responses never leave it. Culpa counts calls to run your plan, and it fails open, so if it ever breaks your app keeps running.
How Culpa works
Find the culprit. Not just the total.
Your dashboard shows what you spent. It stops short of who spent it. Culpa shows the conversation, the user and the feature behind it.
Your prompts stay local.
Culpa runs on your own infrastructure. What you send to a model reaches us at no point.
Every dollar has a name.
Follow any charge to the conversation, the user, the feature and the customer behind it.
See the bill before it lands.
Cost your next feature before you ship it. You get the likely bill and the worst case, at best, median, p90 and p99.
Three steps to your first answer.
Change one base URL.
Or drop in the Python or TypeScript library.
Find your most expensive conversation.
In the first session, not the first week.
Cost your next feature before you ship it.
Why the bill went up
Example dashboardCalls traced
418,209
across 3 projects
Spend this week
$378.41
+ $182 vs last week
Failed calls
312
74% retried, and you paid for all of them
+ $182 this week traced to one culprit
Spend over 14 days
Most expensive users
Next week forecast
Graded against reality. Accuracy shown as results land.
Keep reading
Sources: OpenAI API pricing, Gemini API pricing. Last reviewed 2026-08-05, rates effective 2026-07-02. Plain text version.