Open Audio Judge ASR Leaderboard

Three MLX Community ASR models transcribe the same research-guided eval set, then Gemini judges transcript quality from WER-sensitive errors through semantic meaning preservation.

Seed eval cases35
Research categories7
MLX ASR models3
Verified judged transcripts105

Demo Run

1. Materialize audio

Turn public-safe text seeds into local audio under ignored runs/.

2. Transcribe

Run each MLX ASR model through oaj autojudge-mlx-asr.

3. Judge

Gemini scores candidate transcripts against references and semantic rubrics.

4. Publish

Combine model reports into a leaderboard page with category slices.

First Model Set

ModelWrapperStatusWhy This Model
mlx-community/whisper-large-v3-turbo-asr-fp16mlx-audio35-case run passedStrong Whisper-family baseline with MLX conversion.
mlx-community/Qwen3-ASR-1.7B-8bitmlx-audio35-case run passedRecent ASR-specific model for comparison against Whisper.
mlx-community/VibeVoice-ASR-4bitmlx-audio35-case run passedCompact quantized ASR model to expose speed/quality tradeoffs.

Verified Leaderboard Results

Generated from runs/asr-leaderboard/full-35-combined/results.jsonl. The verified matrix covers 105 judged transcripts across 3 MLX ASR models and 7 research categories: acoustic_noise_robustness, entity_factual_integrity, negation_modality_scope, numeric_unit_integrity, semantic_paraphrase_preservation, temporal_scheduling_accuracy, transcription_accuracy_wer.

ModelCasesGemini SamplesAverage ScoreLabels
mlx-community/VibeVoice-ASR-4bit35/35 ok10596.533 accurate, 1 needs_review, 1 inaccurate
mlx-community/Qwen3-ASR-1.7B-8bit35/35 ok10595.231 accurate, 3 needs_review, 1 inaccurate
mlx-community/whisper-large-v3-turbo-asr-fp1635/35 ok10593.430 accurate, 3 needs_review, 2 inaccurate

Category Breakdown

ModelWERNumeric/UnitNegation/ModalityTemporalEntityParaphraseAcoustic Noise
mlx-community/VibeVoice-ASR-4bit5 cases, 96.2 avg, 5 accurate5 cases, 99.2 avg, 5 accurate5 cases, 99.6 avg, 5 accurate5 cases, 98.8 avg, 5 accurate5 cases, 90.2 avg, 4 accurate, 1 inaccurate5 cases, 98.4 avg, 5 accurate5 cases, 92.8 avg, 4 accurate, 1 needs_review
mlx-community/Qwen3-ASR-1.7B-8bit5 cases, 92.8 avg, 4 accurate, 1 needs_review5 cases, 92.0 avg, 4 accurate, 1 needs_review5 cases, 100.0 avg, 5 accurate5 cases, 100.0 avg, 5 accurate5 cases, 89.0 avg, 4 accurate, 1 inaccurate5 cases, 100.0 avg, 5 accurate5 cases, 92.4 avg, 4 accurate, 1 needs_review
mlx-community/whisper-large-v3-turbo-asr-fp165 cases, 94.8 avg, 4 accurate, 1 needs_review5 cases, 92.0 avg, 4 accurate, 1 needs_review5 cases, 93.4 avg, 4 accurate, 1 needs_review5 cases, 90.6 avg, 4 accurate, 1 inaccurate5 cases, 88.6 avg, 4 accurate, 1 inaccurate5 cases, 97.6 avg, 5 accurate5 cases, 96.6 avg, 5 accurate

Total Gemini judge samples: 315. Refresh this block with .venv/bin/python scripts/refresh_asr_leaderboard_artifacts.py after rerunning the verified ASR model jobs. The combined local report is runs/asr-leaderboard/full-35-combined/report.html and the committed summary artifact is docs/asr-leaderboard-summary.json. The generated refresh report is docs/asr-leaderboard-refresh-report.md, and the generated shell playbook is docs/asr-leaderboard-refresh-commands.sh. The committed run manifest is docs/asr-leaderboard-run-manifest.json, with coverage validation in docs/asr-leaderboard-manifest-validation.json and seed-manifest validation in docs/asr-seed-manifest-validation.json. The next-refresh plan is docs/asr-leaderboard-next-runs.json, and the hosted artifact manifest is docs/asr-leaderboard-hosted-manifest.json. The artifact bundle index is docs/asr-leaderboard-artifacts.json. Runtime readiness is tracked in docs/asr-leaderboard-runtime-status.json; together they include the source result files, complete model/category matrix, missing-cell guidance, hosted copy map, and reproducible refresh workflow. Pass ASR_LEADERBOARD_HOSTED_DIR with --hosted-dir-from-env to copy the same verified artifacts into the hosted Pages checkout. Use docs/asr-leaderboard-report-index.md as the generated map from the demo page to the combined full-35 report and per-source run reports; use docs/asr-leaderboard-report-links.json for the same map in machine-readable form.

Generated Refresh Workflow

These commands are generated from the same workflow metadata written to docs/asr-leaderboard-summary.json and docs/asr-leaderboard-refresh-report.md.

StepCommand
Preflight refresh inputs.venv/bin/python scripts/refresh_asr_leaderboard_artifacts.py --check-only
Require audio manifest readiness.venv/bin/python scripts/refresh_asr_leaderboard_artifacts.py --check-only --require-audio-ready
Validate seed manifest.venv/bin/python scripts/validate_asr_seed_manifest.py --summary-out docs/asr-seed-manifest-validation.json
Materialize audio.venv/bin/python scripts/synthesize_tts_cases.py --cases examples/asr_research_cases.jsonl --out runs/asr-research-audio --discard-text-sidecars --summary-out runs/asr-research-audio/summary.json
Check MLX ASR runtimePYTHONPATH=src .venv/bin/python -m open_audio_judge.cli check-mlx-asr-runtime --python-bin .venv/bin/python --model mlx-community/whisper-large-v3-turbo-asr-fp16
Run one MLX ASR model.venv/bin/oaj autojudge-mlx-asr --python-bin .venv/bin/python --cases runs/asr-research-audio/tts_audio_cases.jsonl --model <mlx-community/model-id> --judge-provider gemini --judge-samples 3 --out runs/asr-leaderboard/<run-name>
Discover latest complete runs.venv/bin/python scripts/refresh_asr_leaderboard_artifacts.py --discover-complete-model-runs --update-run-manifest
Refresh committed artifacts.venv/bin/python scripts/refresh_asr_leaderboard_artifacts.py
Run refresh shell playbookbash docs/asr-leaderboard-refresh-commands.sh
Check generated page.venv/bin/python scripts/check_asr_leaderboard_page.py
Verify generated artifacts are fresh.venv/bin/python scripts/refresh_asr_leaderboard_artifacts.py --check-only --require-generated-fresh
Sync hosted artifacts.venv/bin/python scripts/refresh_asr_leaderboard_artifacts.py --hosted-dir-from-env
Check hosted mirror.venv/bin/python scripts/refresh_asr_leaderboard_artifacts.py --check-only --hosted-dir-from-env

Generated Model Refresh Commands

Load the Gemini secret only in the local shell before running live judge calls: source /Users/wangyauli/.openclaw/secrets/open-audio-judge-gemini.env.

ModelRun Command
mlx-community/whisper-large-v3-turbo-asr-fp16.venv/bin/oaj autojudge-mlx-asr --python-bin .venv/bin/python --cases runs/asr-research-audio/tts_audio_cases.jsonl --model mlx-community/whisper-large-v3-turbo-asr-fp16 --judge-provider gemini --judge-samples 3 --out runs/asr-leaderboard/whisper-large-v3-turbo-refresh
mlx-community/Qwen3-ASR-1.7B-8bit.venv/bin/oaj autojudge-mlx-asr --python-bin .venv/bin/python --cases runs/asr-research-audio/tts_audio_cases.jsonl --model mlx-community/Qwen3-ASR-1.7B-8bit --judge-provider gemini --judge-samples 3 --out runs/asr-leaderboard/qwen3-asr-1.7b-refresh
mlx-community/VibeVoice-ASR-4bit.venv/bin/oaj autojudge-mlx-asr --python-bin .venv/bin/python --cases runs/asr-research-audio/tts_audio_cases.jsonl --model mlx-community/VibeVoice-ASR-4bit --judge-provider gemini --judge-samples 3 --out runs/asr-leaderboard/vibevoice-asr-refresh

If a primary MLX ASR model is unsupported locally, record that blocked state in the run notes before trying the documented fallbacks: mlx-community/whisper-small.en-asr-4bit, mlx-community/parakeet-rnnt-0.6b, mlx-community/GLM-ASR-Nano-2512-4bit.

Generated Artifacts

PathPurpose
runs/asr-leaderboard/full-35-combined/results.jsonlCombined ASR judge results used by the generated page and report.
runs/asr-leaderboard/full-35-combined/report.htmlLocal combined HTML report with per-case judge details.
docs/asr-leaderboard-summary.jsonMachine-readable leaderboard summary and reproducible refresh workflow.
docs/asr-leaderboard-refresh-report.mdHuman-readable coverage, score, source-file, and command report.
docs/asr-leaderboard-report-index.mdHuman-readable index linking the demo page, combined report, and source run reports.
docs/asr-leaderboard-report-links.jsonMachine-readable map linking the demo page to combined and source ASR reports.
docs/asr-leaderboard-refresh-commands.shGenerated shell playbook for repeatable ASR leaderboard refreshes.
docs/asr-leaderboard-run-manifest.jsonCommitted source result manifest for manifest-based refreshes.
docs/asr-leaderboard-manifest-validation.jsonCoverage validation for the model/category result matrix.
docs/asr-seed-manifest-validation.jsonSeed-manifest validation proving public-safe ASR cases keep exact category coverage.
docs/asr-leaderboard-next-runs.jsonMachine-readable next-refresh plan for missing ASR model/category cells.
docs/asr-leaderboard-hosted-manifest.jsonMachine-readable manifest of ASR demo artifacts mirrored to the hosted Pages checkout.
docs/asr-leaderboard-artifacts.jsonSingle machine-readable index for the ASR leaderboard artifact bundle.
docs/asr-leaderboard-runtime-status.jsonMachine-readable MLX ASR and Gemini readiness status for refresh automation.

Source Run Reports

Each source run keeps its own local report alongside the JSONL file that feeds the combined 35-case leaderboard.

Result FileLocal ReportCasesCategories
runs/asr-leaderboard/whisper-large-v3-turbo-smoke/judge-report/results.jsonlruns/asr-leaderboard/whisper-large-v3-turbo-smoke/judge-report/report.html3/3 oktranscription_accuracy_wer: 3
runs/asr-leaderboard/whisper-large-v3-turbo-full-gap/judge-report/results.jsonlruns/asr-leaderboard/whisper-large-v3-turbo-full-gap/judge-report/report.html12/12 oknegation_modality_scope: 3, numeric_unit_integrity: 3, temporal_scheduling_accuracy: 4, transcription_accuracy_wer: 2
runs/asr-leaderboard/whisper-large-v3-turbo-semantic-smoke/judge-report/results.jsonlruns/asr-leaderboard/whisper-large-v3-turbo-semantic-smoke/judge-report/report.html5/5 oknegation_modality_scope: 2, numeric_unit_integrity: 2, temporal_scheduling_accuracy: 1
runs/asr-leaderboard/whisper-large-v3-turbo-entity-smoke/judge-report/results.jsonlruns/asr-leaderboard/whisper-large-v3-turbo-entity-smoke/judge-report/report.html5/5 okentity_factual_integrity: 5
runs/asr-leaderboard/whisper-large-v3-turbo-paraphrase-smoke/judge-report/results.jsonlruns/asr-leaderboard/whisper-large-v3-turbo-paraphrase-smoke/judge-report/report.html5/5 oksemantic_paraphrase_preservation: 5
runs/asr-leaderboard/whisper-large-v3-turbo-noise-smoke/judge-report/results.jsonlruns/asr-leaderboard/whisper-large-v3-turbo-noise-smoke/judge-report/report.html5/5 okacoustic_noise_robustness: 5
runs/asr-leaderboard/qwen3-asr-1.7b-smoke/judge-report/results.jsonlruns/asr-leaderboard/qwen3-asr-1.7b-smoke/judge-report/report.html3/3 oktranscription_accuracy_wer: 3
runs/asr-leaderboard/qwen3-asr-1.7b-full-gap/judge-report/results.jsonlruns/asr-leaderboard/qwen3-asr-1.7b-full-gap/judge-report/report.html12/12 oknegation_modality_scope: 3, numeric_unit_integrity: 3, temporal_scheduling_accuracy: 4, transcription_accuracy_wer: 2
runs/asr-leaderboard/qwen3-asr-1.7b-semantic-smoke/judge-report/results.jsonlruns/asr-leaderboard/qwen3-asr-1.7b-semantic-smoke/judge-report/report.html5/5 oknegation_modality_scope: 2, numeric_unit_integrity: 2, temporal_scheduling_accuracy: 1
runs/asr-leaderboard/qwen3-asr-1.7b-entity-smoke/judge-report/results.jsonlruns/asr-leaderboard/qwen3-asr-1.7b-entity-smoke/judge-report/report.html5/5 okentity_factual_integrity: 5
runs/asr-leaderboard/qwen3-asr-1.7b-paraphrase-smoke/judge-report/results.jsonlruns/asr-leaderboard/qwen3-asr-1.7b-paraphrase-smoke/judge-report/report.html5/5 oksemantic_paraphrase_preservation: 5
runs/asr-leaderboard/qwen3-asr-1.7b-noise-smoke/judge-report/results.jsonlruns/asr-leaderboard/qwen3-asr-1.7b-noise-smoke/judge-report/report.html5/5 okacoustic_noise_robustness: 5
runs/asr-leaderboard/vibevoice-asr-smoke/judge-report/results.jsonlruns/asr-leaderboard/vibevoice-asr-smoke/judge-report/report.html3/3 oktranscription_accuracy_wer: 3
runs/asr-leaderboard/vibevoice-asr-full-gap/judge-report/results.jsonlruns/asr-leaderboard/vibevoice-asr-full-gap/judge-report/report.html12/12 oknegation_modality_scope: 3, numeric_unit_integrity: 3, temporal_scheduling_accuracy: 4, transcription_accuracy_wer: 2
runs/asr-leaderboard/vibevoice-asr-semantic-smoke/judge-report/results.jsonlruns/asr-leaderboard/vibevoice-asr-semantic-smoke/judge-report/report.html5/5 oknegation_modality_scope: 2, numeric_unit_integrity: 2, temporal_scheduling_accuracy: 1
runs/asr-leaderboard/vibevoice-asr-entity-smoke/judge-report/results.jsonlruns/asr-leaderboard/vibevoice-asr-entity-smoke/judge-report/report.html5/5 okentity_factual_integrity: 5
runs/asr-leaderboard/vibevoice-asr-paraphrase-smoke/judge-report/results.jsonlruns/asr-leaderboard/vibevoice-asr-paraphrase-smoke/judge-report/report.html5/5 oksemantic_paraphrase_preservation: 5
runs/asr-leaderboard/vibevoice-asr-noise-smoke/judge-report/results.jsonlruns/asr-leaderboard/vibevoice-asr-noise-smoke/judge-report/report.html5/5 okacoustic_noise_robustness: 5

Eval Categories

transcription_accuracy_wer

Classic edit-distance calibration: substitutions, deletions, insertions, homophones, punctuation, and disfluency policy.

entity_factual_integrity

Names, addresses, organizations, product labels, and alphanumeric identifiers.

numeric_unit_integrity

Amounts, dosages, decimals, percentages, account numbers, and value-changing numeric pairs.

negation_modality_scope

Negation, permission, prohibition, modality, only-scope, and exception boundaries.

temporal_scheduling_accuracy

Dates, times, durations, AM/PM, relative ordering, and deadlines.

semantic_paraphrase_preservation

Events, causal relations, metric tradeoffs, coreference, and conditional instructions.

acoustic_noise_robustness

Cafe noise, vehicle noise, industrial background noise, reverberant rooms, and overlapping speech.

Command Flow

source /Users/wangyauli/.openclaw/secrets/open-audio-judge-gemini.env

oaj autojudge-mlx-asr \
  --python-bin .venv/bin/python \
  --cases runs/asr-research-audio/tts_audio_cases.jsonl \
  --model mlx-community/whisper-large-v3-turbo-asr-fp16 \
  --judge-provider gemini \
  --judge-samples 3 \
  --out runs/asr-leaderboard/whisper-large-v3-turbo-full-gap

oaj autojudge-mlx-asr \
  --python-bin .venv/bin/python \
  --cases runs/asr-research-audio/tts_audio_cases.jsonl \
  --model mlx-community/Qwen3-ASR-1.7B-8bit \
  --judge-provider gemini \
  --judge-samples 3 \
  --out runs/asr-leaderboard/qwen3-asr-1.7b-full-gap

oaj autojudge-mlx-asr \
  --python-bin .venv/bin/python \
  --cases runs/asr-research-audio/tts_audio_cases.jsonl \
  --model mlx-community/VibeVoice-ASR-4bit \
  --judge-provider gemini \
  --judge-samples 3 \
  --out runs/asr-leaderboard/vibevoice-asr-full-gap

.venv/bin/python scripts/refresh_asr_leaderboard_artifacts.py

Expected Output Files

PathPurpose
candidate_cases.jsonlSource cases plus MLX-generated candidate transcripts.
model_summary.jsonModel id, transcriber, category/slice coverage, and candidate coverage.
judge-report/results.jsonlGemini structured scores, reasons, semantic categories, and sample aggregates.
judge-report/report.htmlPer-model HTML report.
combined/report.htmlCombined ASR leaderboard report.

Representative Result JSON

{
  "case_id": "asr-numeric-transfer-001",
  "provider": "gemini",
  "overall_score": 42,
  "meaning_preservation": "major_loss",
  "error_categories": ["number_error", "contrast_error"],
  "metadata": {
    "candidate_model": "mlx-community/whisper-large-v3-turbo-asr-fp16",
    "eval_category": "numeric_unit_integrity",
    "asr_slice": "amount_contrast",
    "judge_sample_count": 3
  }
}

Research Notes

See docs/asr-eval-taxonomy.md for the category rationale and examples/asr_research_cases.jsonl for the seed manifest. These leaderboard results are verified local artifacts from all seven categories, with private/generated audio kept out of the repository.