swyxbenchWorking paper · AI systems researchSource ↗

Working paper · diagnostic no human gold

AI Engineer transcription, timing, and diarization

swyxbench research archive · 100-talk release + 1,042 paired Scribe outputs

Executive readout

What the 100-talk cohort says now

Production postureScribe remains the substrate, not human truth

It supplies the machine reference and production artifact shape; the study cannot establish its absolute accuracy.

Closest to silverSpeechmatics leads text and timing agreement

In this cohort it has the lowest disagreement with Scribe text and the tightest matched-word timing tails.

Technical termsAssemblyAI preserves the most entity mentions

It has the strongest frozen-lexicon entity F1 against Scribe silver; the lexicon is model-reviewed, not human-approved.

Speed and local controlDeepgram is fastest; Parakeet is the local lane

Deepgram has the lowest managed latency. Parakeet is inexpensive to run locally but supplies no speaker labels here.

Study scope Abstract

The primary study compares five transcription systems on a checksum-pinned 100-talk cohort using Scribe v2 as machine silver. A separate 1,042-pair Scribe comparison measures output disagreement across two request configurations on byte-identical audio, while a historical 981.46-second talk documents the motivating failure mode. The scorecard distinguishes observed operations from machine-reference proxies and explicitly marks missing human evidence.

Executive summary

We can transcribe the AI Engineer archive today, but we cannot yet claim that any provider is the most accurate. Our best evidence is a checksum-pinned comparison of five systems on the same 100 recordings, using ElevenLabs Scribe v2 as a machine-generated silver reference. It measures disagreement, not human accuracy. The immediate action is to keep the completed Scribe archive reversible while funding a human-annotated subset; switching canonical providers before that would replace one unverified machine transcript with another.

Scribe remains the archive substrate because the corpus already exists and its raw, timed output is preserved—not because this study proves it is best. Where review budget permits, retain AssemblyAI output for the annotated subset rather than discarding either candidate. The next credibility step is human annotation of transcript text, technical entities, speaker turns and identities, overlap regions, and word boundaries.

How to read this report

This report combines three studies that answer different questions:

  1. The 100-talk provider study compares AssemblyAI, Deepgram, Speechmatics, Parakeet v2, and Parakeet v3 on 52.5992 hours of identical saved audio. This is the primary study.
  2. The 1,042-pair Scribe configuration-sensitivity study asks how much two Scribe v2 campaigns disagree when given byte-identical audio under different request recipes. It measures operational variation, not pure model repeatability or accuracy.
  3. The historical one-talk bake-off explains why the benchmark exists and records early operational lessons. It now lives in the appendix and should not drive the provider ranking.

“Silver WER” means substitutions plus insertions plus deletions divided by the Scribe reference word count. Lower means closer to Scribe, not closer to a human transcript. “Unavailable” means the evidence does not exist; it never means zero.

01 · Primary cohort

100-talk agreement with Scribe silver

The release consumes the checksum-pinned 100-talk aggregate only. Planned prices and incomplete runs are never plotted as measured quality or human accuracy.

Checking multi-provider release status…

02 · Evidence map

Ten-dimension scorecard

This scorecard separates provider measurements, machine-reference proxies, and missing human evidence. The 100-talk provider cohort and 1,042-pair Scribe configuration-comparison corpus answer different questions and are never pooled into one ranking.

Loading evidence coverage and score distributions…

What the five-provider study found

All five systems ultimately completed all 100 recordings. A short FFmpeg environment incident caused pre-inference decode failures in the local lanes, but no failed model inference entered the final 500 completed cases. The cohort contains 571,363 normalized Scribe reference words. Intervals below use deterministic 2,000-resample recording-level bootstrap; recordings, not individual words, are the resampling unit.

System Micro silver WER ↓ 95% case-bootstrap interval Per-talk p95 Technical-entity F1* ↑ Median latency Cohort cost
Speechmatics Enhanced 8.98% 8.07–9.77% 13.34% 0.922 73.8s $21.04 inferred from rate card
Parakeet v3 9.19% 8.37–9.97% 16.75% 0.752 27.6s $1.18 inferred at $1/compute-hour
AssemblyAI U3.5 Pro 10.19% 9.11–11.10% 16.10% 0.955 17.1s $14.73 observed
Parakeet v2 10.99% 9.70–12.03% 16.41% 0.829 25.4s $1.16 inferred at $1/compute-hour
Deepgram Nova-3 12.42% 11.05–13.55% 18.26% 0.939 10.8s $17.88 observed

*The technical-entity column is a machine-silver diagnostic against a frozen 81-entity lexicon. The lexicon was model-assisted, is not human-approved, and its occurrences were not human-labeled. Managed systems and Scribe received a 98-term prompt glossary; Parakeet did not. The result can favor prompted managed systems and the reference.

No system dominates every dimension. Speechmatics is closest to Scribe across the full transcript. AssemblyAI is strongest on prompted technical names. Deepgram returns managed results fastest. Parakeet keeps audio and inference local at low estimated compute cost, but gives up speaker labels and substantial technical-name recall. The Speechmatics and Parakeet v3 micro-WER intervals overlap, so this silver study does not establish a clean accuracy ordering between them.

The worst talks matter as much as the average. Per-talk p95 disagreement ranges from 13.34% for Speechmatics to 18.26% for Deepgram. A corpus-wide average hides the recordings most likely to need review.

Why the reference is silver, not gold

Scribe is useful because all 100 saved transcripts already existed and the same source bytes could be rerun elsewhere. It is not privileged because it has been proven correct. It scores zero against itself by definition, and any Scribe error can make a competitor look worse for being right.

The normalization applies Unicode NFKC, lowercases text, and removes punctuation and symbols before edit distance. That makes lexical disagreement reproducible, but deliberately does not score casing, punctuation, paragraphing, code symbols, or semantics. Separate formatting diagnostics still compare machines with Scribe; they are not formatting accuracy.

The confidence intervals quantify cohort sampling variability under this fixed sample. They do not account for reference error, model drift, prompt asymmetry, or missing human labels.

Cohort and method

The cohort is 100 retained recordings, 52.5992 audio hours, and 2.853 GiB of original audio selected from the completed 1,042-recording standalone-talk corpus. Every system received identical checksum-verified bytes.

The duration mix is 10 recordings at 5–12 minutes, 42 at 12–20, 25 at 20–35, 10 at 35–60, and 13 at one hour or longer. Selection balanced duration, four Scribe-derived technical-keyterm-density quartiles, and anonymous Scribe speaker-cluster counts. Eight title-derived multi-presenter candidates were retained as stress fixtures, but are not labeled as panels without human verification. Accent, true participant count, overlap, language mixture, and room condition are unavailable.

Each case preserves source and output checksums, raw and normalized artifact hashes, model/runtime metadata, timestamps, anonymous speaker labels where supported, client latency, attempts, failure classification, and cost evidence state. The checked-in release contains aggregate results and 500 text-free case rows; raw audio, transcripts, and provider payloads remain outside Git.

OpenAI and faster-whisper were not added to this paid round. OpenAI's strongest transcription and diarization endpoints did not offer the same word-timestamp-plus-speaker contract when the cohort was frozen. The observed faster-whisper large-v3 Mac CPU path was slower than real time.

Technical vocabulary and formatting

Technical names are graph keys, not cosmetic spelling. Changing “Claude” to “Cloud” can create the wrong product node, corrupt search, and attach citations to the wrong concept even when overall WER looks respectable.

System Precision Recall Entity F1
AssemblyAI U3.5 Pro 0.942 0.970 0.955
Deepgram Nova-3 0.942 0.937 0.939
Speechmatics Enhanced 0.906 0.939 0.922
Parakeet v2 0.993 0.711 0.829
Parakeet v3 0.989 0.606 0.752

Parakeet produced few extra lexicon mentions but missed many. That explains how low whole-transcript disagreement can coexist with poor graph inputs. It is not a fair unprompted-versus-prompted accuracy contest or human NER evaluation.

Punctuation F1 against Scribe-rendered text ranges from roughly 0.666 to 0.692. Speechmatics punctuation was reconstructed from raw response.results records because normalized transcript text discarded most punctuation; otherwise we would have measured adapter loss as provider weakness. Casing, numeric-like tokens, and code-like tokens are separate silver-relative diagnostics and do not affect the main ranking.

Speaker attribution and diarization

AssemblyAI, Deepgram, and Speechmatics produced anonymous recording-local speaker labels. Parakeet v2 and v3 did not; their diarization result is unavailable, not 0%.

Managed system Exact Scribe speaker-count match Mean absolute count difference Mapped attribution disagreement* ↓
AssemblyAI U3.5 Pro 61% 1.74 3.83%
Speechmatics Enhanced 56% 0.93 2.19%
Deepgram Nova-3 49% 1.56 3.89%

*Labels are optimally remapped within each recording and compared only on exact lexical matches. This is neither DER nor JER, does not identify a person, and does not score overlap. The combined speaker-attributed disagreement proxy is not cpWER or tcpWER.

Anonymous clusters still need roster resolution and human review before becoming named speakers. Interruption-heavy panels require human RTTM/UEM annotations before a credible overlap or diarization-accuracy claim.

Word timing

Every system timed every lexical token it emitted. But exact timed-token coverage against the reference ranged from 88.13% to 91.84% after lexical alignment. The scorer assigns a one-second penalty to unmatched or untimed reference tokens instead of calculating drift only on easy matches.

On exact lexical matches, p95 absolute midpoint disagreement with Scribe was 130ms for Speechmatics, 179.5ms for AssemblyAI, 182ms for Deepgram, 254ms for Parakeet v2, and 262ms for Parakeet v3. Mean signed midpoint bias ranged from -29.6ms for Speechmatics to +18.0ms for Parakeet v2. These are machine-to-machine differences, not absolute boundary error or proof that a deep link lands on the right semantic moment.

The historical WhisperX experiment shows why coverage stays in the denominator. WhisperX timed all 2,609 tokens it emitted, but only 2,595 of 2,625 source tokens mapped back exactly. Orthographic merges such as skill.md, 20-25, and day-to-day made 30 source units disappear before drift was reported.

Latency, throughput, retries, and cost

Latency is measured around each client request or local inference. Campaign throughput and maximum observed in-flight work are reconstructed from retained intervals; they are not advertised limits.

System Client latency p50 / p95 Max observed in flight Campaign throughput Inference retries Cost evidence
AssemblyAI 17.1s / 58.4s 5 246.7 audio-h/wall-h 0 $14.7278 observed from dedicated-key receipts
Deepgram 10.8s / 58.4s 12 241.8 audio-h/wall-h 0 $17.88 observed; $0.3399/audio-h
Speechmatics 73.8s / 299.7s 10 169.4 audio-h/wall-h 0 $21.0397 inferred from rate card
Parakeet v2 25.4s / 106.3s 2 46.4 audio-h/wall-h 0 $1.164 inferred at $1/compute-hour
Parakeet v3 27.6s / 128.2s 2 27.6 audio-h/wall-h 0 $1.183 inferred at $1/compute-hour

Speechmatics' workspace balance fell by 39.43 credits while 101 Enhanced requests existed, including one older request. That delta is not a cohort invoice.

The local receipts include 150 Parakeet v2 and 198 Parakeet v3 pre-inference audio-decode failures from one 12-second FFmpeg environment incident. They are deployment evidence, not model retries. Once corrected, each affected case ran one successful model inference; inference retries are zero for all five systems.

The release also publishes machine-silver repetition and speech-gap risk signals. They identify suspicious insertions or loops relative to Scribe timing; they are not hallucination rates because Scribe can omit real speech and a no-word interval is not human-verified silence.

Scribe v2 configuration sensitivity across the full corpus

Two complete Scribe v2 campaigns cover 1,042 byte-identical audio pairs. One instrumental-only recording has no lexical speech, leaving 1,041 spoken pairs and 448.376 audio hours in the scored subset.

The runs disagree on 1.048% of first-run normalized words: 26,966 substitutions, 11,138 insertions, and 12,745 deletions across 4,852,543 words. Median per-talk disagreement is 0.744%; p95 is 2.017%. Among 4,813,025 exact matched tokens, p95 absolute midpoint drift is 50ms.

Low lexical disagreement does not make the runs interchangeable. After recording-local label mapping, anonymous speaker attribution differs on 8.08% of exact matched tokens; 409 of 1,041 recordings change detected speaker count. The second run also produces 36,996 more segments.

The recipes are confounded. The first used word timing and a global 98-term glossary; the second used English pinning, character timing, audio events, per-talk keyterms, entity detection, seed 42, and temperature 0. ElevenLabs exposed no immutable serving revision. This measures operational configuration sensitivity, not pure model determinism or accuracy.

03 · Configuration sensitivity

Scribe output disagreement across two configurations

Two Scribe v2 campaigns are paired only when their retained source-audio bytes match. The newer request adds character timing, per-talk keyterms, entity detection, and deterministic request controls, so the comparison is confounded and is not pure model repeatability; neither run is human ground truth.

Loading paired-run comparison…

Evidence limits and the next benchmark

There is no human transcript, entity-occurrence annotation, RTTM/UEM, word-boundary gold, overlap annotation, or named-speaker identity set. The study therefore cannot report human WER or NER; DER/JER/cpWER/tcpWER; overlap or identity accuracy; absolute timestamp error or deep-link correctness; summary factuality; correction time; retrieval or citation quality; trustworthy accent, multilingual, room-condition, or panel subgroups; peak memory; exact self-hosted billing; or an observed operational-complexity score.

Provider consensus does not repair this gap. Machines can agree on the same wrong word or boundary. The next release should human-annotate a bounded stratified subset with two annotators plus adjudication. The frozen protocol and rubric describe the intended gates.

Appendices and study history

The remaining sections preserve the production deployment record and the historical one-talk investigation. They explain how the benchmark acquired its present shape; they do not supersede the 100-talk results above.

Appendix A: Scribe production readiness and deployment

Scribe has the primitives needed to build independently from a YouTube video, but that does not prove it is the most accurate system. A speaker cluster is not yet a named person and a timestamp is not yet a verified citation.

Capability Scribe v2 status What we actually know
Public YouTube input Documented, but failed in production Two different public, unrestricted, embeddable YouTube videos returned HTTP 400 because ElevenLabs could not download the upstream source. Use retained native-audio upload instead.
Transcript text Observed The recovered benchmark produced 2,655 word records and 26 instances of “Claude” versus zero “Cloud.”
Word timing Observed and documented A preserved production pilot timed all 2,013/2,013 words. Absolute timestamp accuracy remains unavailable because no human word-boundary gold exists.
Character timing Observed in the second archive campaign timestamps_granularity=character covered every lexical record in that run; the first campaign requested word timing only.
Speaker diarization Observed and documented The two-speaker benchmark found two anonymous clusters; the production pilot attributed all 2,013 words to its one detected speaker. diarize defaults to false, so every production request must explicitly set it to true.
Number of speakers Documented num_speakers accepts 1–32 when the event roster provides a useful prior.
Named speaker identity Conditional Labels such as speaker_0 are recording-local unless registered voices are matched with use_speaker_library=true; otherwise identity needs roster matching and human review.
Simultaneous overlapping speech Unavailable The response documents one speaker_id per word, not multiple simultaneous speakers or overlap-aware DER. Escalate interruption-heavy panels to a separate overlap-aware diarization lane.
Technical vocabulary Observed paid add-on The production request supplied 98 technical keyterms; the endpoint permits up to 1,000. Public pricing adds $0.05/audio hour.
Audio events and punctuation Documented Audio-event tagging is available and enabled by default; response records distinguish word, spacing, and audio_event.
Language support Documented More than 90 languages; pass a known language when appropriate or retain the detected language and probability.
Word confidence Documented Response examples include logprob for transcription likelihood. This is not a speaker-identity or diarization-confidence score.
Async batch execution Documented webhook=true returns early and delivers the transcript asynchronously; callbacks need HTTPS, signature verification, request correlation, idempotency, and retries.
Long recordings Documented with conflicting size limits Standard requests support up to 10 hours; multichannel up to one hour. The overview says 3 GB while the endpoint says 5 GB, so use 3 GB as the conservative operational ceiling.
Retention and provenance Limited Request history is retained by default; zero retention is enterprise-only. The original one-talk pilot payload was lost, but both 1,042-talk campaigns preserve raw provider artifacts. ElevenLabs exposed no immutable serving revision for either campaign.

Primary sources: Scribe v2 endpoint and response schema, speech-to-text capabilities, batch webhook delivery, and zero-retention policy.

Appendix B: historical one-talk study and Podhood audit

Historical diagnostic

How the study started: one technical talk

This archived bake-off explains the original failure mode and research direction. It does not override the 100-talk cohort.

Observed one-talk technical-name diagnostic
Figure 1. Historical one-talk surface-form counts for one technical term across transcription systems. This is not WER, accuracy, or proof of correctness.
01 · Test case

One recording. Identical input.

All measurements use the same 981.46-second conference recording (16:21) with two observed speaker clusters. The recording is available on YouTube ↗; the checked source SHA-256 is af8050fdab9c8c214410ded106da8509ea51d44901928f2b3dc2480a05d943ab.

02 · Managed systems

Managed speech-to-text

Only completed, recovered observations are compared. Prices are the dated public base-rate snapshot; speed is recording duration divided by measured client wall time.

Observed client wall-clock latency for Deepgram and ElevenLabs, with AssemblyAI shown as an upper bound
Observed end-to-end client latency. AssemblyAI is an upper bound; Speechmatics has no comparable client-side measurement.
Published base price per audio hour for AssemblyAI, ElevenLabs, Speechmatics, and Deepgram
Published base rates per recorded audio hour, dated 2026-08-21. Add-ons and actual invoices may differ.
Four completed managed ASR runs on the same source recording.
SystemUSD / hourLatencySpeedWordsSpeakersClaude / CloudSilver WER ↓
ElevenLabsScribe v2$0.2217.05 s57.6×2,655226 / 00.00% †
AssemblyAIUniversal-3.5 Pro$0.21<29 s>33.8×2,639226 / 0Unavailable
DeepgramNova-3$0.4626.69 s146.7×2,650225 / 1Unavailable
SpeechmaticsEnhanced$0.40012 s*2,640221 / 5Unavailable

* Speechmatics reports provider-side service metadata rather than observed client wall time; its speed is therefore unavailable. AssemblyAI latency is an upper bound. † ElevenLabs scores zero against itself by definition. Other managed full transcripts were not retained, so their silver WER is unavailable. Public prices are a snapshot dated 2026-08-21, not billing guarantees.

03 · Local systems

Self-hosted speech-to-text

Local runs used the available Mac CPU/MLX host. Real-time factor (RTF) is processing time divided by recording duration; smaller is faster.

Observed local processing time for both NVIDIA Parakeet versions and faster-whisper on the same Mac
Observed local runtime on one Mac. Faster-whisper CPU processing exceeded the source recording’s duration.
Three completed self-hosted ASR runs.
SystemRuntimeRTF ↓SpeedClaude / CloudSilver WER ↓
NVIDIAParakeet-TDT 0.6B v3 on MLX24.29 s0.02540.4×7 / 193.92%
NVIDIAParakeet-TDT 0.6B v2 on MLX23.78 s0.02441.3×11 / 153.92%
Whisperfaster-whisper large-v3 CPU int81288.35 s1.3130.8×20 / 64.29%

Managed GPU infrastructure and this local Mac are different execution environments; runtimes are descriptive, not a hardware-controlled contest.

03a · Interactive comparison

Quality, cost, and speed

Compare managed APIs with local models using either whole-transcript disagreement against ElevenLabs or the narrower 26-occurrence Claude/Cloud diagnostic. Self-hosted cost is an adjustable hardware-time scenario, not a vendor quote.

Loading interactive benchmark comparisons…

03b · Machine reference

Silver-reference transcript disagreement

The recovered ElevenLabs production transcript supplies 2,728 normalized reference words. Comparing preserved transcripts with word-level Levenshtein distance gives Parakeet v2 and v3 3.92% disagreement each, and faster-whisper 4.29%. Parakeet’s aggregate disagreement is lower even though its Claude/Cloud failures are more severe; generic WER alone misses domain-critical errors.

This is disagreement with a machine transcript, not human-gold word error rate. The reference system scores zero against itself by definition. The recovered Scribe run and original local runs use the same YouTube recording but independently extracted source encodings, not byte-identical audio.

04 · Word timestamps

Alignment and timing disagreement

WhisperX timestamped every token it emitted, but emitted-token coverage obscures tokens lost when mapping back to the source stream.

Native token stream compared with WhisperX forced alignment.
Native source tokens2,625
WhisperX emitted tokens2,609
Exactly aligned source tokens2,595 / 2,625 (98.86%)
Unmatched source tokens30
Median midpoint disagreement159 ms
p95 midpoint disagreement353 ms
Maximum midpoint disagreement3.790 s

These are disagreements between timing systems, not absolute timestamp errors; no human word-boundary reference exists.

05 · Speaker separation

Diarization

Both completed local diarization systems found two speaker clusters. Reported turns and anomalies are observed outputs, not human-adjudicated correctness.

Completed diarization runs on the same recording.
SystemRuntimeRTF ↓SpeakersTurnsObserved artifact
pyannoteCommunity-11244.16 s1.2682118One 16.9 ms false-speaker blip caused two extra changes.
NVIDIANeMo multiscale spectral clustering1870.63 s1.9062163Four isolated 270 ms false-speaker assignments caused eight extra changes; the clustering output cannot represent overlap.
06 · Published baseline

Published transcript comparison

The published Podhood transcript emitted 0 instances of “Claude” and 26 instances of “Cloud” on this recording. Its highlighted quote linked approximately 13 seconds away from the corresponding speech. These are directly observed case-specific discrepancies, not a corpus-level accuracy estimate.

07 · Evidence boundary

Limitations and unavailable measurements

  • This is one clean two-speaker conference talk, not a representative leaderboard.
  • Managed raw provider responses were not preserved across the workstation crash, so managed findings are recovered session observations.
  • No human gold exists; machine-reference disagreement is not correctness and human-gold WER, technical entity error rate, DER, and JER remain unavailable.
  • Mac CPU/MLX runtimes are not directly comparable with managed GPU services.
  • Public prices are dated labels, not guarantees.

Not scored: human-gold WER, technical named-entity error rate, DER, JER, and absolute word-timestamp error. Silver-reference disagreement WER is available only where the complete transcript survived; it does not substitute for independent human annotations.

No completed comparable result: Groq Whisper large-v3; OpenAI gpt-4o-transcribe-diarize; Soniox stt-async-v5; Canary 1B v2; pyannote Precision-2.

The historical study used one talk to expose the failure modes that the 100-talk design later measured systematically. It is preserved for provenance, not as a provider leaderboard.

The Podhood quality bar

The examined Podhood episode exposes a compelling user experience:

The product problem is not missing structure. It is that confident structure amplifies upstream errors.

Claude became Cloud

The following is a case-insensitive exact surface-form diagnostic over recovered text. It is not WER and does not pretend to be human gold.

System Claude Cloud
ElevenLabs Scribe v2 26 0
AssemblyAI Universal-3.5 Pro 26 0
Deepgram Nova-3 25 1
Speechmatics Enhanced 21 5
faster-whisper large-v3 20 6
Parakeet-TDT 0.6B v2 11 15
Parakeet-TDT 0.6B v3 7 19
Podhood published transcript 0 26

The published page also contains “Cloud Code,” “Cloud Agent SDK,” “Browser Base,” “code start,” and joined text such as theright. These are not cosmetic: they create or reinforce the wrong graph nodes.

The clearest timestamp failure is a highlighted “day 30” quote labeled 14:24. The corresponding speech is in the segment beginning around 14:11; 14:24 starts the following thought about the skill creator. The deep-link mechanism is precise, but the semantic attachment is roughly thirteen seconds late.

Recovered benchmark input

Raw audio and full transcripts are not committed. The source URL, decoding properties, duration, and checksum preserve the chain of custody without redistributing the media.

Historical managed ASR

Every row uses the same 981.461-second / 16:21 source. Rates are public snapshots, not negotiated quotes; “× realtime” is observed source duration divided by measured client wall time.

System Public base rate / audio hour Observed latency Observed speed Word timing Speaker labels Claude / Cloud Operational finding
ElevenLabs Scribe v2 $0.22 base / $0.27 with keyterms 17.047s 57.6× Yes; 2,655 word records Yes; 2 clusters 26 / 0 Best completed technical-name diagnostic; direct YouTube URLs failed twice in production, so retained native audio is uploaded.
AssemblyAI Universal-3.5 Pro $0.21 base <29s including upload >33.8× Yes; 2,639 words Yes; 2 clusters 26 / 0 Strong challenger; five returned utterances were too coarse for transcript navigation.
Deepgram Nova-3 ~$0.462 before add-ons 6.688s 146.8× Yes; 2,650 words Yes; 2 clusters 25 / 1 Fastest completed managed run; 156 useful utterances and immutable-looking model version.
Speechmatics Enhanced $0.40 ~12s service metadata Not comparable Yes; 2,640 words Yes; 2 clusters 21 / 5 The 12-second value is provider service metadata, not measured end-to-end client latency.
Groq Whisper large-v3 $0.111 10.899s Not scored Word + segment documented Not established Unavailable HTTP 200 and latency were observed, but the raw result was lost; no transcription quality claim.
OpenAI diarization model Model-specific price unverified Unavailable Unavailable Speaker-segment timing only Documented Unavailable Pre-crash result was lost; not a substitute for native word-level citations.

The four preserved managed observations placed the main speaker changes within roughly 0.21 seconds of one another. Agreement is useful for debugging, but it is not DER.

AssemblyAI's requested universal-3-pro returned HTTP 400 and told callers to use universal-3-5-pro with universal-2 fallback. The live endpoint and returned speech_model_used take precedence over stale public wording.

Production pilot: observed, not inferred

Population: one separate 802-second upload-backed Scribe request; operational pilot only.

The first preserved upload-backed Scribe v2 pilot used public video HvMyYLTfvhg. These values describe one real request; they are not a provider SLA or human-gold quality score.

Production measurement Observed result
Source audio 802 seconds / 13:22
Native audio retained M4A; 12,975,349 bytes; SHA-256 prefix 2e590
Audio naming contract <youtubeId>--<sanitized-title>.m4a
Measured client wall time 12.83 seconds / approximately 62.5× realtime
Technical keyterms supplied 98
Words with start/end timestamps 2,013 / 2,013 (100%)
Words with speaker attribution 2,013 / 2,013 (100%)
Detected speakers / readable segments 1 / 44
Observed account-concurrency header 20 maximum concurrent requests
Estimated audio charge with keyterms $0.0602, before tax and actual invoice reconciliation
Human transcript, speaker, and timestamp gold Unavailable

Two different public, unrestricted, embeddable videos failed with HTTP 400 upstream-source-download errors when passed directly as ElevenLabs source_url. This establishes a reproduced failure for those two videos, not a proven outage across every YouTube URL. The runner therefore downloads each original native M4A, preserves it under its YouTube ID and sanitized title, computes SHA-256, and uploads that exact retained file for transcription.

The system-installed yt-dlp 2026.03.17 returned HTTP 403; an isolated 2026.8.19 version succeeded. A backfill of 75 previously processed audio files matched all 75 recorded checksums. Audio files and full provider transcripts remain outside this public benchmark repository.

Completed archive campaign

Population: 1,042 completed standalone-talk jobs; seven short uploads, livestreams, and private/unlisted recordings excluded.

A fresh enumeration of the public @aiDotEngineer uploads found:

The campaign completed 1,042 public standalone talks. The 449.4708-hour figure comes from YouTube metadata used for planning; the 448.376-hour Scribe comparison total comes from provider artifacts for the 1,041 spoken pairs. The instrumental-only case and source/provider duration accounting explain why those numbers are not interchangeable.

At the dated public rates, the planning estimate was $98.88 base or $121.36 with keyterms, before tax. That estimate is not a reconciled invoice. The provider lists $0.05/hour for keyterms and $0.07/hour for generic entity detection; the latter targets PII/PHI/PCI-style categories and was not treated as a conference knowledge-graph extractor. Plan pricing and included hours, speech-specific concurrency, and PAYG behavior remain the primary operational sources.

Original bulk-run timing estimate

The Scribe benchmark processed 981.461 seconds of source audio in 17.047 seconds, an observed real-time factor of 0.017369 or 57.6× real-time. A separate preserved production pilot processed 802 seconds in 12.83 seconds, approximately 62.5× real-time, and returned an actual account limit of 20 concurrent requests. Neither isolated observation is a provider SLA or an estimate validated under sustained load.

Recorded audio One in-flight request 12 ideal requests 20 ideal requests 40 ideal requests
All 449.4708h standalone talks 7h 48m ~39m ~23m ~12m
100h planning scenario 1h 44m ~9m ~5m ~3m
1,000h planning scenario 17h 22m 1h 27m ~52m ~26m

These were optimistic service-only linear extrapolations, preserved to show why the campaign used bounded concurrency rather than promising a twelve-minute finish. YouTube retrieval, transfer, queueing, rate limits, retries, and normalization were outside the estimate.

ElevenLabs also internally parallelizes files longer than eight minutes using min(4, ceil(durationSeconds / 480)) workers. The documentation does not establish whether those internal workers count separately against account concurrency. If they do, long talks could consume up to four slots and stretch the optimistic parallel numbers by up to 4×. Free-plus-PAYG limits are also ambiguous: the speech-specific table says eight concurrent requests, while the general PAYG page mentions three. Measure the actual current-concurrent-requests and maximum-concurrent-requests response headers before opening the throttle.

Production procedure

  1. The runner built a deduplicated public-upload manifest, excluding livestreams and uploads shorter than five minutes while tracking video ID, title, duration, event, and source URL.
  2. The rollout began with representative talks and a hard spend cap before opening concurrency across the archive.
  3. It retained native audio as <youtubeId>--<sanitized-title>.m4a, computed SHA-256, and uploaded those exact bytes with model_id=scribe_v2, diarize=true, word timing, and the 98-term glossary. Direct YouTube source_url had failed for both tested videos.
  4. Concurrency stayed bounded by observed account headers, with resumable receipts and retry classification.
  5. Retained source audio, raw responses, and checksums preceded cleaned transcripts and downstream graph artifacts.
  6. Anonymous speaker IDs remain recording-local until roster resolution and review.
  7. Source-video timestamps remain absolute to each canonical YouTube video.

Do not infer that a successful YouTube URL covers private or unlisted videos, that a matching speaker cluster identifies a person, or that provider consensus proves transcript or timing accuracy.

Historical self-hosted ASR

Population: the original 981.461-second diagnostic talk; not the 100-talk cohort.

System Runtime RTF Finding
Parakeet v3 on MLX 24.29s 0.02475 100% native timing; poor technical vocabulary
Parakeet v2 on MLX 23.78s 0.02423 Slightly better names than v3; still below canonical quality
faster-whisper large-v3, CPU int8 1,288.35s 1.313 Better names; slower than real time on this Mac CPU path
Canary 1B v2 unavailable Current host had no supported NVIDIA/CUDA execution; no substitute was scored

Parakeet's roughly 41× real-time speed is attractive, but both versions produced “Cloud Code,” “Cloud Agent SDK,” and “code start.” The knowledge graph pays for those errors long after transcription finishes.

Native timing versus WhisperX

Population: the original diagnostic talk, comparing native faster-whisper timing with a WhisperX realignment.

WhisperX timed every token it emitted, but that headline hides source-token loss:

The lesson is methodological: timestamp coverage must be scored against the source token stream before drift is calculated. “All emitted tokens are timed” is not sufficient. Without human word-boundary gold, these values establish disagreement rather than which timing source is correct.

Historical diarization

Population: the original two-speaker diagnostic talk; no human RTTM/UEM.

System Runtime RTF Observed behavior
pyannote Community-1 1,244.16s 1.268 Two speakers; main changes near 297.031, 800.277, 942.533; one 16.9 ms false-speaker blip
NeMo multiscale clustering 1,870.63s 1.906 Two speakers; main changes near 299.500, 800.220, 942.460; four short false-speaker assignments; no overlap representation
Precision-2 unavailable Replacement API credential was not created after the crash

Community-1 and NeMo strongly agree on the long turns. That still does not establish correctness, and neither result may be labeled DER or JER until human RTTM and UEM exist.

The NeMo receipt used the published five-scale clustering recipe and an oracle speaker count of two. That recipe is telephone-tuned, so this run establishes host feasibility and diagnostic behavior only; it is not an optimized conference-audio result.

What the production artifact must preserve

Every transcript should retain:

That contract makes the graph rebuildable. A corrected transcript can invalidate and regenerate every downstream entity, chapter, embedding, and citation without destroying what the original model returned.

The human-gold benchmark that can choose a winner

The release benchmark needs at least 24 recordings and roughly 18 hours: standalone talks, two-to-six-person panels, noisy livestream excerpts, and multilingual or code-switched sessions. Two annotators plus adjudication must produce transcript, technical-entity, RTTM/UEM, speaker-identity, and word-boundary gold.

Hard gates begin at ≤5% WER and ≤2% technical entity error for standalone talks; ≤8% and ≤3% for panels; DER/JER gates; exact speaker count; ≥99–99.5% source-token timing coverage; p95 timing error of 300–500 ms; overlap handling; and no unsupported summary claims. Full definitions live in the protocol and rubric.

Until that corpus exists, the responsible production move is a reversible bake-off: preserve multiple candidates, expose disagreements, measure correction minutes per recorded hour, and refuse to turn provider consensus into fake gold.

Appendix C: current price snapshot and reproducibility

These are dated public labels from 2026-08-22, not guarantees: Scribe v2 $0.22/audio hour or about $0.27/audio hour with keyterm prompting; AssemblyAI U3.5 Pro $0.21/hour base before diarization and keyterms; Speechmatics Enhanced $0.40/hour; Deepgram Nova-3 $0.0043/minute prerecorded monolingual plus $0.0013/minute for keyterm prompting, with prerecorded diarization included; OpenAI GPT-Transcribe $0.27/hour for the non-diarization model; Groq Whisper large-v3 $0.111/hour; pyannote Precision-2 €0.112/hour on the Developer plan.

Cost matters after correctness. Cheap wrong entities are expensive knowledge-graph inputs.

Reproducibility and artifacts

git clone https://forge.smol.ai/swyx/bench.git
cd bench
corepack enable
pnpm install --frozen-lockfile
pnpm bench check aie-transcription