Skip to content

docs: VAD benchmarks (Silero vs the Parakeet head vs whisper.cpp) with reproducible scripts - #88

Merged
mudler merged 4 commits into
masterfrom
docs/vad-benchmarks
Oct 4, 2026
Merged

mudler merged 4 commits into
masterfrom
docs/vad-benchmarks

Conversation

@localai-org-maint-bot

Copy link
Copy Markdown
Collaborator

What

Adds docs/vad-benchmarks.md, one page with all the VAD measurements made so far, and scripts/vad_bench/ with the scripts, small result files and load logs behind them. The page is linked from docs/vad.md and the README. No audio and no model files are committed.

It covers:

Each section gives how the data was built, the metric definitions, the tables, the caveats and the commands to repeat it.

Where the numbers come from

Every number was copied from saved result files of the runs, or computed from the saved per-run timings. The result files that are small enough are in scripts/vad_bench/results/. The raw per-clip predictions are not committed.

Not quiet-machine numbers

All timings were taken on a shared machine that was never idle. The page says this next to each timing: the Silero speed runs started at a 1-minute load average of 4.2 to 15.9, the batched decode runs at 2.5 to 18.0, and the slice runs at up to 17. The 8-thread numbers of the slice run are noisy (rounds of one configuration differ by up to 30%). A re-run on a quiet machine was tried: the load average was checked 19 times over 3 hours and was never below 5, so nothing was re-run. The poll log is in the results directory. Accuracy numbers do not depend on load.

Limits and what could not be traced

The page marks these as unverified:

  • The script that cut the LibriSpeech subset of the heads-against-Silero run was not saved, so that corpus can be rebuilt in kind but not byte for byte. The commit of that run's parakeet build was not recorded.
  • Which three TED talks were used, and why one more talk was left out.
  • Whether the 393x Silero ONNX speed is a best or a median value, and thread pinning for that run.
  • The build commits of the three builds in the batched decode runs (taken from the description of perf: decode VAD segments in batches #82).
  • The 300 s clip of the Silero speed runs was not kept; it is assumed to be the first 300 s of the 600 s talk.

References are coarse: the synthetic reference counts pauses inside utterances as speech, and the TED reference is built from ASR word times of a Parakeet model, so a bias toward the Parakeet heads is possible. There are no confidence intervals. Differences below the noise are not claimed. Peak memory for a 600 s clip, GPU and streaming were not measured.

Checks

Docs and scripts only. The Python scripts compile, the shell script passes bash -n, and the wvad.cpp test program compiles against whisper.cpp. The data and comparison scripts were not run end to end after being cleaned of local paths.

🤖 Generated with Claude Code

mudler added 4 commits October 4, 2026 06:56
Add docs/vad-benchmarks.md with every VAD measurement made so far: the
Parakeet heads against Silero on synthetic and TED-LIUM audio, Silero in
whisper.cpp against Silero in parakeet.cpp, and the batched decode of VAD
segments on long talks. Each section gives the data, the metrics, the
numbers, the caveats and how to repeat the run.

The scripts, small result files and load logs are in scripts/vad_bench.
Link the page from docs/vad.md and the README. The stand-alone memory of
the head and the timing re-run on a quiet machine are marked pending.

Assisted-by: Claude:claude-sonnet-5-5 [Claude Code]
The load average was checked 19 times over 3 hours and never went below
5, so no timing was run. Keep the earlier speed numbers, each with the
load it was measured under, and add the poll log.

Assisted-by: Claude:claude-sonnet-5-5 [Claude Code]
Fill the pending section with the load time, peak memory and speed of the
stand-alone head slice files (PR 87) against the full ASR files and Silero
F16, with the method, the result files and the caveats. Say plainly which
numbers were taken on a busy machine. Update the guidance on when to use
which detector.

Assisted-by: Claude:claude-sonnet-5-5 [Claude Code]
The VAD-only slice code (PR 87) is now in master. Say so, link the
slice section of docs/vad.md instead of repeating it, and keep the
note that no tagged release has it yet.

Assisted-by: Claude:claude-sonnet-5-5 [Claude Code]
@mudler
mudler force-pushed the docs/vad-benchmarks branch from 4de1261 to a6b03c9 Compare October 4, 2026 06:56
@localai-org-maint-bot

Copy link
Copy Markdown
Collaborator Author

Update: #87 is merged (e53a253), so the sentence in the description saying #87 is open no longer applies. This branch was rebased onto master. The slice code is in master but not in a tagged release yet (latest is v0.5.0), and the benchmarks page now links to the slice section of docs/vad.md instead of repeating it.

@mudler
mudler merged commit b3eaa48 into master Oct 4, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants