Skip to content

Now open source · Learn more

Latency

Speech-to-text latency, measured

Every transcription we run times the provider that answered it. These are those timings — 51,521 provider attempts over the last 90 days, grouped by the region that made the call.

Metric
Clip length
Detail
Row order
Pick the region closest to you
  1. #1 overall

    Groq

    295ms

  2. #2 overall

    Mistral

    646ms

  3. #3 overall

    ElevenLabs

    719ms

Provider
264234291328295221362300521322147—33929237134295
521362391693646498967—905—401889—10376171269636
8209097193045488037505341861575603—364929547825446
760789909456457571748—1001—493509—8352941244393
7776947735855517281439—1844—8082571—18344751498563
585850724106812426361509—1974—512——8893741577845
9921072948452542101611184782498413908128841818954631193513
1271845129614339689291174—1370—6991664—8391262926877
27332678259415061951245727811336370019392620425918944352231654061966
26512849277221631823260623741869391621563053301416832736207131811665
3499280231581721242334403226—5746—26662860—4889272942352583

Milliseconds, provider call only. A cell needs at least 3 attempts to show a number. Click a region to sort by it, or a provider to pin its row.

Method

How this is measured

What the number is
The time one provider took to answer one call, measured at the edge machine that made it — everything that attempt spent, including handing the audio to the provider and waiting on a long-running job. Your upload to us, authentication, and our own credit checks are excluded. So is the network between you and us — this is the provider's time, not your round trip.
Failed attempts count
A provider that times out still spent your time, so its attempt is in the latency numbers. When one provider fails we fall back to another, and both attempts are recorded separately. The error-rate metric shows how often that happens. What is never counted is a request we turn away ourselves before calling anyone — audio past a provider's size cap, or in a format it does not accept: that provider never received the call, so it is not charged for it here.
A row is a provider, until you open it
Most of these providers offer several models, and HyperWhisper lets you pin the one you want. A provider row covers whichever model of that provider actually ran — its default for most people, plus whatever anyone else picked — so read it as “how fast this provider answers us”. Break down by model splits each one into its models. Those rows count only the attempts that ran on that model, so they fill in more slowly and a young model may show nothing but dashes for a while.
The names match the app
Provider and model names here are the same ones the app's Provider and Model menus show, read from the same shared catalog. Google covers both Chirp and Gemini in one row, exactly as the app does — the model you pick under it is what decides which of the two runs.
Why clip length matters
Longer audio takes longer to transcribe, so comparing a provider handed 5-second clips against one handed 5-minute files would say nothing. Every cell compares clips of similar length, grouped by an estimate taken from the audio's size and format — the same estimate for every provider, so no cell is flattered by a provider that measures its own audio differently.
What it covers
The batch transcription endpoint. Live streaming transcription is not measured here.
What we store
A timing row carries the provider, the model, the region, which clip-length group the audio fell in, which attempt in the chain it was, and whether the call worked. It carries no account, no key, no request id, and no audio or text. The clip's own length is not kept, and the timestamp is stored only to the hour, so nothing ties a row to a person or reassembles one transcription.
Who is counted
Only the HyperWhisper apps, from the versions that carry the setting below — macOS 2.43.0 and Windows 1.10.0 onward. Sharing is on by default, and a default is only fair if you could have changed it, so builds that shipped before the setting existed are not measured at all. Neither is anything calling the API directly.
How to opt out
In the HyperWhisper app, turn off Share anonymous speed data under Settings → General. Your transcriptions work exactly the same — the same providers, the same speed, the same result — we just stop keeping the timing. Local models never send a timing at all.