Benchmarks & methodology
Zephyr, our speech-to-text engine, is evaluated with a fully reproducible, provider-agnostic suite: every benchmark is generated from public datasets using deterministic, seeded scripts, and produces identical outputs regardless of provider. We publish the harness so you can verify the numbers on your own — nothing here is hand-picked.
The numbers
The full cross-provider comparison table (WER, diarization, timestamps, multilingual, and more) lives on our landing page, kept in one place so it never drifts. This page explains what is measured and how to reproduce it yourself.
What we measure
Six benchmarks, each from public data:
| Benchmark | Dataset(s) | Measures |
|---|---|---|
| WER | LibriSpeech clean/other, Earnings21, SPGISpeech | Word error rate (accuracy) |
| Entity accuracy | Earnings21 (spaCy NER) | Precision / recall / F1 on named entities |
| Diarization | AMI-SDM, AMI Mix-Headset, Earnings21, NotSoFar, DiPCo | DER at the standard 0.25 s collar (the figure on our site), strict DER at collar 0, cpWER, speaker error, missed speech, false alarm — overall and per dataset, all overlap-aware |
| Timestamps | AMI (word-level refs) | Word start/end MAE, within-50/100/200 ms |
| Multilingual | FLEURS (14 langs) | WER per language (CER for zh/ja/th) |
| Language switching | FLEURS (generated) | Switch-boundary WER, switch latency |
Reproduce it yourself
The suite is the SpeechRevolutions/benchmarks repository. It talks to the production API through the published speechrevolutions SDK — there is nothing to host and no local stack to run. Point it at any competitor with that provider's API key instead; every provider returns the same normalized transcript, so scoring is identical.
git clone https://github.com/SpeechRevolutions/benchmarks
cd benchmarks
pip install -r requirements.txt
python -m spacy download en_core_web_sm # entity benchmark
# 1. Build the frozen datasets from public sources (deterministic).
# The audio is not committed, so this step is required.
python -m benchmarks.datasets.prepare_all
# 2. Run one benchmark, or all of them, against our production API
export SPEECHREVOLUTIONS_API_KEY=stt_...
python -m benchmarks.cli run wer
python -m benchmarks.cli run all
# 3. Run against another provider (needs that provider's API key)
DEEPGRAM_API_KEY=... python -m benchmarks.cli run all --provider deepgram
ASSEMBLYAI_API_KEY=... python -m benchmarks.cli run all --provider assemblyaipython -m benchmarks.cli list shows every benchmark and provider. Results are written as JSON / Markdown / CSV. Every command above runs from the repository root.
Methodology we hold ourselves to
- WER uses the standard Whisper text normalizers; diarization DER is overlap-aware and scored at the same 0.25 s collar for every provider, with strict collar-0 figures reported alongside.
- Where a metric requires data a provider can't emit (e.g. per-word language labels for switch latency, or word timestamps from a text-only API), it is reported as
null— never fabricated. - Custom-vocabulary glossaries, when used, are applied identically to every keyword-capable provider through its own native parameter, so comparisons stay fair.
Honest by construction
Because the harness is public and deterministic, you don't have to take our word for any figure — clone it, point it at your own audio and the providers you care about, and see for yourself. The best benchmark is always your data (see the migration playbook).