CoolFace
Datasetpublic

koedesk/stt-bench

koedesk STT Bench — raw transcriptions (v1, Track A) 28,400 raw transcriptions: 13 hosted speech-to-text engine variants × 12 languages × 200 FLEURS utterances, produced by a preregistered benchmark run on 2026-07-05. Every engine output is published unmodified, including full raw API responses. Conflict of interest, stated first: this benchmark is built and funded by koedesk, a voice-typing product that uses ElevenLabs Scribe v2. We do not pretend to be neutral. Instead… See the full description on the dataset page: https://huggingface.co/datasets/koedesk/stt-bench.

sourceHugging Facecc-by-4.0updated 3mo agoView on Hugging Face
0likes43downloads
Dataset Card

koedesk STT Bench — raw transcriptions (v1, Track A)

28,400 raw transcriptions: 13 hosted speech-to-text engine variants × 12 languages × 200 FLEURS utterances, produced by a preregistered benchmark run on 2026-07-05. Every engine output is published unmodified, including full raw API responses.

Conflict of interest, stated first: this benchmark is built and funded by koedesk, a voice-typing product that uses ElevenLabs Scribe v2. We do not pretend to be neutral. Instead, everything you need to distrust us and re-score the data yourself is public: the methodology was frozen in `PREREGISTRATION.md` before the headline run (verifiable from git history), all raw outputs are in this dataset, and the scoring code is MIT-licensed on GitHub. Where Scribe loses, the result is published unchanged — it is not #1 overall.

  • —Leaderboard: https://koedesk.app/benchmark/
  • —Methodology, scoring code, normalizers, amendments: https://github.com/guide-inc-org/koedesk-stt-bench
  • —Write-ups: English · 日本語 (Zenn)

Configs

transcriptions (28,400 rows)

One row per (engine variant, language, utterance).

columntypedescription
enginestringEngine variant key (matches scores.json / leaderboard)
model_idstringExact model identifier sent to the API
langstringBenchmark language code (see FLEURS mapping below)
utt_idstring{lang}_{index:04d} — index into the FLEURS test split, dataset order
duration_secfloatAudio duration
ref_text_rawstringFLEURS reference transcription, untouched
ref_text_normalizedstringReference after the preregistered normalization pipeline
hypothesisstringEngine output text, untouched
latency_secfloatWall-clock API latency for this utterance
timestamp_utcstringWhen the API call was made
retriesintRetry count for this utterance
errorstring/nullFinal error, if any (all rows in v1 completed successfully)
params_jsonstringJSON: exact request parameters
raw_response_jsonstringJSON: the full, untruncated API response

cell_scores (142 rows)

One row per (engine, language) cell, computed by the frozen scoring code (`make_scores.py`); scores.json is also included verbatim at the repo root. Columns include corpus CER/WER, utterance means, bootstrap 95% CIs, real-time-factor percentiles, list price per audio hour, and the tie group (tie_group, 1 = best tier). The headline metric is CER for ja/th/zh and WER elsewhere (headline_metric column); wer_* is null for th (no whitespace word boundaries).

Read results through tie groups, not raw ranks. Within a tie group, pairwise differences are not statistically distinguishable (paired bootstrap, preregistered in §6). Claiming "engine A beats engine B" inside the same tier is exactly the misuse this benchmark tries to prevent.

Engines (13 hosted variants)

enginemodel_idlanguages
elevenlabsscribe_v212
openaigpt-4o-transcribe12
whisper1whisper-112
google_stt_v2chirp_312
deepgramnova-312
mai_transcribemai-transcribe-1.512
geminigemini-2.5-flash12
gemini_25_progemini-2.5-pro12
gemini_31_flash_litegemini-3.1-flash-lite12
gemini_31_progemini-3.1-pro-preview12
gemini_35_flashgemini-flash-latest12
mistral_voxtralvoxtral-mini-26029 (no id/th/vi)
amivoice-a-general1 (ja only)

Engine selection and exclusions (e.g. engines whose terms of service prohibit publishing benchmark results) are documented in the ToS audit.

Audio provenance (audio is NOT redistributed here)

Test material is the google/fleurs test split, first 200 utterances in dataset order per language (deterministic — no sampling choices). To reconstruct the exact audio: load the config below, take rows 0–199 of the test split, then apply `normalize_audio.py` (16-bit PCM, −6 dBFS peak — the identical file was sent to every engine).

langFLEURS configlangFLEURS config
jaja_jpkoko_kr
enen_usvivi_vn
zhcmnhanscnidid_id
dede_dethth_th
frfr_freses_419
ptpt_brruru_ru

Known artifacts (kept as measured, per the preregistration)

  • —`gemini_25_pro` / `zh` / `zh_0192`: the model leaked ~4,800 characters of English reasoning into the transcription field for one utterance. That single utterance accounts for 86.7% of the cell's error mass (CER 48.3% as measured; 6.45% excluding it). This is the engine's real behavior, not a pipeline bug, and is published as measured.
  • —FLEURS zh references: 13/200 reference texts contain English annotation notes from the source dataset; this affects all engines identically.
  • —Gemini-family latency: measured through Cloudflare AI Gateway (affects latency_sec/RTF for the five gemini* variants only; accuracy is unaffected). All other engines were called directly.
  • —Measurement environment: run from Vietnam with an AWS Tokyo exit node (see Amendment 6).

Limitations

This is Track A only: FLEURS is public and every commercial engine has plausibly trained on it. These numbers connect to vendor-claimed figures and the HF Open ASR Leaderboard; they do not prove real-world dictation accuracy. A planned Track B (fresh recorded audio) was cancelled before any measurement existed — see Amendment 7. The benchmark refreshes quarterly (§9 of the preregistration).

License and attribution

  • —This dataset (transcriptions, scores, documentation): CC BY 4.0, © 2026 Guide Inc. (koedesk).
  • —Reference texts (ref_text_raw, ref_text_normalized) derive from FLEURS (google/fleurs, CC BY 4.0; Conneau et al., 2022, FLEURS: Few-shot Learning Evaluation of Universal Representations of Speech).
  • —Engine outputs are published for evaluation/research purposes; each provider's terms were audited before inclusion (see ToS audit).

Citation

bibtex
@misc{koedesk-stt-bench-2026,
  title  = {koedesk STT Bench: a preregistered multilingual speech-to-text benchmark},
  author = {{Guide Inc. (koedesk)}},
  year   = {2026},
  url    = {https://koedesk.app/benchmark/},
  note   = {Raw data: https://huggingface.co/datasets/koedesk/stt-bench. Methodology: https://github.com/guide-inc-org/koedesk-stt-bench}
}