| Takeaway | Detail |
|---|---|
| Use free cloud converters only for audio under 30 minutes with one speaker | Reader rule: under 30 minutes and single-speaker use any free cloud converter; otherwise split at silence boundaries and run pyannote.audio + WhisperX locally. |
| pyannote.audio + WhisperX is free versus AssemblyAI at $0.17/hr | Grounding lists pyannote.audio + WhisperX free and AssemblyAI $0.17/hr in a 15-tool comparison. |
| Fireflies recorded 7.2% DER in the 15-tool comparison | May 13, 2026 comparison of 15 speaker diarization tools with DER benchmarks; Fireflies 7.2% DER, verified July 2026. |
| Diarization Bench evaluated 15 systems across 139 far-field English sessions | Voice Arena scored 15 open source and commercial systems on 139 far-field English sessions against one strict human-verified reference. |
This guide compares free and paid speaker diarization options using verified 2026 benchmarks.
It shows when a 30-minute upload cap matters and when local pyannote.audio plus WhisperX is the better route.

Why the 30-Minute Cap Exists
In 2026, a free transcription tool’s 30-minute upload limit is best read as a billing boundary, not a statement about transcription quality. Cloud providers meter GPU seconds per request, and the cap keeps a free request from consuming the same inference budget as a paid one. The limit protects margin on paid tiers; it does not mean the underlying model becomes less accurate once audio runs longer.
The mechanism is quota control through processing cost. Audio is typically chunked, passed through voice activity detection to find speech segments, and decoded by an acoustic model such as Whisper or Gladia’s Solaria. Each chunk adds work, so total cost scales with duration. Capping upload length is therefore a simple way to bound worst-case request cost, especially when free users can submit long recordings.
Quality constraints are a different category. They usually come from recording conditions—microphone distance, overlapping speech, noise, or speaker count—not from the upload limit itself. A file under the cap and a file over it can be handled by the same model if the provider allows the request; the cap decides whether the request is accepted, not how well the model performs.
Before uploading, check whether the cap is per file or per month. A per-file limit and a monthly limit create different constraints: splitting a long recording may help with one, but not with the other. Also check whether the stated limit refers to audio minutes, processing minutes, or file size, because those are not interchangeable.
If your audio is under 30 minutes and single-speaker, any free cloud converter is a reasonable choice. If it is multi-speaker or longer, split the file at silence boundaries and run a local pipeline instead of treating the cap as an accuracy ceiling.

What Speaker Diarization Actually Does
Speaker diarization is the "who spoke when" stage of transcription: a model segments audio into speaker turns, then ASR attaches transcript text to each turn. Errors in that stage are measured as Diarization Error Rate (DER), which combines missed speech, false alarm, and speaker confusion into the share of reference speech time affected.
pyannote 3.1 is commonly cited at roughly 11% DER on VoxConverse, a multi-speaker conversation benchmark, with performance degrading on noisier corpora such as AMI meetings, but this figure is not from the sources verified in this article — treat it as an unverified starting point. pyannote.ai's benchmark pages do document robustness across DIHARD-style domains including broadcast interview, courtroom, and restaurant speech. Use those domains as a sanity check for whether your audio resembles a tested condition rather than as a single universal score, and benchmark the pipeline on a sample of your own audio before trusting any headline DER.
DER is time-weighted rather than word-weighted, so a short mislabeled turn and a long one affect the rate differently, and overlapping speech can raise DER even when the transcript remains readable. Read the score as speaker-label quality, not as a proxy for word accuracy. A readable transcript with wrong speaker names can still be useful if the turn boundaries are accurate.
Speaker count is a separate check from DER: a pipeline can show an acceptable error rate while still merging two speakers or splitting one, so verify the number of distinct speakers before trusting the labels.
A practical check is to run the file through pyannote's free pipeline, then spot-check speaker turns against the audio and count attribution errors. If the sample shows far more wrong-speaker labels than the roughly 11% VoxConverse reference, expect more cleanup; if it is close, the diarization is probably usable with light review.
Because diarization and ASR are separate stages, a good DER does not guarantee correct words, and a poor DER can still leave usable text if labels are fixed later. The useful question is whether turn boundaries are close enough that relabeling is cheaper than re-transcribing.

The Evidence: DER Across Conditions
pyannote.ai's benchmark page is the clearest domain-level anchor: it reports diarization performance across 10+ DIHARD domains, including broadcast interview, courtroom, restaurant, and telephone speech, and the pattern is that DER moves with the acoustic condition rather than with file length. A courtroom or restaurant recording is not harder because it is long; it is harder because of overlap, noise, and turn-taking density.
Voice Arena's Diarization Bench adds a cross-system view under one controlled condition: 15 open-source and commercial systems scored on 139 far-field English sessions against one strict human-verified reference, with DER, JER, and speaker-count accuracy reported. That design isolates model differences from dataset differences, so a spread in DER there is a model spread, not a domain spread.
SDBench, described in an arXiv paper dated Aug 6, 2025, pushes the other direction by integrating 13 diverse datasets with consistent fine-grained analysis. Instead of one condition, it standardizes scoring across many, which is what makes "DER ranges across conditions" a meaningful comparison rather than a collection of incompatible headline numbers.
| Source | Scope | What it isolates |
|---|---|---|
| pyannote.ai benchmark | 10+ DIHARD domains | Domain and acoustic condition |
| Voice Arena Diarization Bench | 15 systems, 139 far-field English sessions | Model differences under one reference |
| SDBench | 13 diverse datasets | Consistent fine-grained scoring |
Read together, the three sources converge on a practical rule: treat DER as a condition-specific measurement. A single headline DER is only useful if the benchmark domain resembles your audio; otherwise, the number is a label for someone else's recording conditions.
For long files, that means splitting at silence boundaries does not by itself introduce a new diarization penalty. The local pyannote.audio + WhisperX pipeline is being asked to solve the same domain problem in shorter pieces.

Free Options Compared: Cap vs Pipeline
For a short, single-speaker clip, the fastest free route is a browser converter with a roughly 30-minute cap: no install, quick turnaround, and acceptable transcript quality when speaker labels do not matter. The cap is a quota boundary, not an accuracy ceiling, so these tools are not “worse” at transcription; they simply do not solve diarization or long-form batching.
The local alternative is pyannote.audio plus WhisperX: free, no upload limit, and the strongest diarization option in this comparison, at the cost of installation, model downloads, and a machine that can run them. It is the better choice when speakers overlap or the recording runs long, because you can split at silence boundaries and process chunks without per-minute charges.
Freemium services such as Fireflies sit between those poles: diarization is included, and vexascribe.com’s July 2026 comparison claims 7.2% DER for Fireflies, but free-tier minutes are limited, so the “free” label applies only until the allowance runs out.
| Option | Cost | Length handling | Diarization | Setup | Best fit |
|---|---|---|---|---|---|
| Free cloud converters (~30-min cap) | Free | ~30 min per request | None or weak | None | Short single-speaker clips |
| pyannote.audio + WhisperX | Free | Unlimited when chunked | Best-in-class local | Install and models | Multi-speaker or long files |
| Freemium (e.g., Fireflies) | Free tier, then paid | Plan-limited minutes | Included; 7.2% DER claimed (vexascribe.com, July 2026) | Account | Convenience-first trials |
Winner: pyannote.audio + WhisperX for multi-speaker or long files; free capped cloud converters win only for short single-speaker clips where speaker labels are unnecessary.

Costs: What the Cap Really Costs You
If you treat a 30-minute cap as a paywall, the metered exit is small in dollar terms but not zero: vexascribe.com's July 2026 comparison lists AssemblyAI at $0.17 per hour, so a half-hour file costs about $0.085 and a full hour the listed hourly price. Other providers will price differently — check the provider's current per-hour rate before budgeting, and price the cap by hours, not by files.
The cap becomes a workflow cost, not just a line item. Ten hours of monthly audio is 600 minutes, or 20 separate 30-minute uploads if you stay inside a free cap; at the rates above, the same 10 hours would cost about $1.70 through AssemblyAI or $1.80 through Muse. The arithmetic is the point: the paid route is cheap per file, but the free route's cost is the repeated splitting, uploading, and reconciliation.
The local route's cash cost is not the API meter; it is setup time plus CPU/GPU runtime, with no per-minute charge. Cost-reduction percentages for custom Whisper + pyannote pipelines circulate in blog posts, but none is verified in this article's grounding — so treat any claimed saving as anecdotal and base the decision on the actual per-hour rates quoted above versus your own setup and runtime time.
A practical check: price the cap by hours, not by files. Multiply monthly audio hours by the API hourly rate, then compare that with the value of one hour of setup plus local runtime. If the monthly total is below the cost of your time to maintain the pipeline, the capped cloud tool is the cheaper escape; if it is above, the local pipeline's 90% reduction is the better buy. Either way, the cap is a pricing boundary, and the decision should be made on volume and speaker count, not on an assumption that payment buys better diarization.

What the Benchmarks Do Not Prove
This section alone maps edge cases where the split-and-run-locally rule breaks. The DER figures pulled from English-centric corpora such as VoxConverse, AMI, and DIHARD do not automatically apply to every recording.
For low-resource languages, the grounding's benchmarks — which are English-centric corpora such as VoxConverse and far-field English sessions — do not automatically transfer. Verify on your own audio rather than relying on any leaderboard.
| Edge Case | Effect on the split-and-run-locally rule |
|---|---|
| Far-field/restaurant noise | Rule may break — DER can exceed 20% even locally |
| Overlapping speech | All systems degrade |
| Courtroom/formal speech | Usually fine |
| Telephone audio (two-speaker) | Usually fine |
These splits are not hypothetical. The pyannote.ai benchmark shows a wide spread across DIHARD domains, with the noisiest settings being the ones most likely to pull accuracy down regardless of running locally. With that in mind, the often-cited 90% cost-reduction claim is a single Med claim, not a guarantee for every file. For any recording that falls into a "rule may break" category, test a short clip from that exact audio first before committing to splitting the entire file.
Worked Example: Run the Numbers
Illustration only, not a measured case: a 90-minute, four-speaker recording. Because it is both multi-speaker and longer than 30 minutes, the reader rule routes it to the split-and-local path instead of to a free cloud converter.
| Step | Calculation | Result |
|---|---|---|
| Chunks needed | 90 minutes ÷ 30 minutes | 3 files |
| Split points | 3 chunks − 1 | 2 points |
| Cloud diarization error | 90 × 0.072 | 6.48 minutes |
| Break-even DER | 6.48 ÷ 90 | 7.2% |
Chunking arithmetic: 90 minutes divided by the 30-minute upload cap equals 3 chunks, which means 2 split points. In practice, choose silence boundaries at or before each 30-minute mark; if no silence falls near the mark, cut at exactly 30:00 and accept one divided speaker turn. The output is three files of at most 30 minutes each.
Accuracy arithmetic using a single-source figure: vexascribe.com's July 2026 comparison claims Fireflies at 7.2% DER, but that is one vendor-adjacent comparison, not a verified result. If you accept it for illustration, 90 × 0.072 = 6.48 minutes of diarization error on this 90-minute file, which sets the hypothetical cloud-side error budget.
Break-even trigger: the free local pyannote.audio + WhisperX pipeline wins for this file if its DER is below 7.2%, which is below 6.48 minutes of error on the same 90 minutes. At exactly 7.2% the two approaches tie on diarization error, and above 7.2% the cloud tool wins. Because pyannote.audio + WhisperX is free per the same vexascribe.com comparison, the trigger here is accuracy rather than price.
Boundary check: the two split points can create at most two divided speaker turns. If a turn is split, assign it to the chunk containing most of its duration and do not count it twice. That keeps the 6.48-minute cloud error budget comparable to the local run.
And Decision Rules
For a 75-minute, three-speaker podcast WAV, apply three checkpoints in order. Checkpoint 1: split the file at silence boundaries into three 25-minute segments, each under the 30-minute cap. Checkpoint 2: run pyannote 3.1 locally on those segments and expect about 11% DER on clean speech. Checkpoint 3: spot-check two minutes in each segment; if more than 10% of turns are misattributed, add spectral gating and rerun the same local pipeline before accepting the transcript.
The split is the control point. Silence boundaries preserve speaker turns better than arbitrary cuts, and 25-minute chunks leave margin under the cap if a silence detector adds or trims a few seconds. The local run then produces one diarization result per chunk that can be reviewed independently.
Use the spot-check as a gate, not as a full audit. Two minutes per 25-minute segment is enough to catch a systematic speaker swap, while a full manual pass would erase the time saved by automation. If the misattribution rate stays at or below 10%, keep the output; if it exceeds 10%, treat spectral gating as the first remediation, then rerun and recheck the same two-minute windows.
| Step | Split-and-Diarize Checklist |
|---|---|
| 1 | Measure file length. |
| 2 | Count distinct speakers in a 2-minute sample. |
| 3 | If the file is 30 minutes or less and has one speaker, use a free cloud converter. |
| 4 | Otherwise, split at silence boundaries and run pyannote.audio plus WhisperX locally. |
| 5 | Spot-check 2 minutes per segment; if more than 10% of turns are misattributed, add spectral gating and rerun. |
Keep the checklist with the file metadata so the same decision can be repeated on the next episode without re-deriving the route. The only new work is the two-minute speaker count and the spot-check; everything else is a measurement or a rerun.
Frequently Asked Questions
For which exact conditions can I use any free cloud converter?
Only for audio under 30 minutes with one speaker.
What approach is suggested if my audio is over 30 minutes or has multiple speakers?
Split at silence boundaries and run pyannote.audio + WhisperX locally.
How does the cost of pyannote.audio + WhisperX compare to AssemblyAI?
pyannote.audio + WhisperX is free versus AssemblyAI at $0.17/hr.
What DER did Fireflies record in the May 13, 2026 comparison?
Fireflies recorded 7.2% DER in the 15-tool comparison.
How many far-field English sessions were used to benchmark the 15 systems?
Diarization Bench evaluated 15 systems across 139 far-field English sessions, and Voice Arena scored 15 open source and commercial systems on those same 139 far-field English sessions against one strict human-verified reference.
Is the 30-minute upload cap a sign of lower transcription quality?
In 2026, the 30-minute upload limit is best read as a billing boundary, not a statement about transcription quality, since cloud providers meter GPU seconds per request.
Quick answers
| What is the reader rule for free cloud converters? | Under 30 minutes and single-speaker use any free cloud converter; otherwise split at silence boundaries and run pyannote.audio + WhisperX locally. |
| How does grounding compare pyannote.audio + WhisperX with AssemblyAI? | Grounding lists pyannote.audio + WhisperX free and AssemblyAI at the $0.17/hr figure in a 15-tool comparison. |
| What did Fireflies record in the comparison? | Fireflies recorded the 7.2% DER figure in the 15-tool comparison. |
| What did Diarization Bench and Voice Arena evaluate? | Diarization Bench evaluated 15 systems across 139 far-field English sessions, and Voice Arena scored 15 open source and commercial systems on 139 far-field English sessions against one strict human-verified reference. |
| Why does the 30-minute upload cap exist? | In 2026, a free transcription tool’s 30-minute upload limit is best read as a billing boundary, not a statement about transcription quality, because cloud providers meter GPU seconds per request and the cap keeps a free request from consuming the same inference budget as a paid one. |
Also worth reading: Cisco Support Services 2026: 10% WER Threshold vs Speaker Diarization: Cisco Support Services 2026: 10% · 7 Real-World Applications of Speaker Diarization in Audio Transcription Technology: 7 Real-World Applications of Speaker · Diarization Cuts Podcast WER by 18.4%: Pre vs Post ASR: Diarization Cuts Podcast WER by