Skip to content

feat(parakeet-cpp): VAD (Silero and the Moondream head), vad_model option and gallery entries - #12463

Merged
mudler merged 4 commits into
masterfrom
feat/parakeet-vad
Oct 3, 2026
Merged

mudler merged 4 commits into
masterfrom
feat/parakeet-vad

Conversation

@mudler-agent

Copy link
Copy Markdown
Collaborator

Description

The parakeet-cpp backend now serves /vad and /v1/vad with the standalone VAD of parakeet.cpp: Silero VAD v6.2.3 (MIT) and the VAD head of Moondream Ultra and Redux. It also gets a vad_model option and gallery entries for all of these.

What changed

  • VAD rpc: the backend accepts a Silero GGUF, or an ASR model that has a VAD head (Moondream Ultra and Redux), as the VAD model.
  • New vad_model:<silero gguf> option. Any parakeet ASR model without a VAD head (v3, Nemotron) can use it to cut long audio at pauses with Silero.
  • New tuning options: vad_threshold, vad_min_pause, vad_min_speech, vad_speech_pad, vad_max_segment. The existing silero-vad backend uses ms-based options with different names, so the two are not interchangeable.
  • Gallery entries: parakeet-cpp-silero-vad-f16, parakeet-cpp-vad-moondream-redux-packed, parakeet-cpp-vad-moondream-ultra-q8_0, parakeet-cpp-vad (installs Silero) and parakeet-cpp-tdt-0.6b-v3-silero-vad.
  • parakeet.cpp pin bumped to 6165e3d (parakeet.cpp PR 83).
  • Docs updated under docs/content/.

Tests

  • go test ./backend/go/parakeet-cpp/...: pass (Go specs with stubbed C calls)
  • go test ./core/gallery/...: pass
  • golangci-lint run on backend/go/parakeet-cpp and core/gallery: 0 issues
  • Smoke test with the real pin, CPU only: gallery installs of the Silero and Redux VAD entries downloaded and verified. /v1/vad segments equal parakeet-cli vad output (max difference 0 s; Silero 18 segments, Redux 16, on a 60 s clip). v3 plus Silero transcription equals the CLI output.

Not verified

  • GPU, Vulkan and Metal builds.
  • Ultra through /v1/vad.
  • Non-Linux platforms.
  • The 15 MB request body limit. A 60 s clip as JSON floats needs about 10 MB with rounded samples, so long audio through /v1/vad needs a smaller payload or a higher limit.
  • go vet reports an unsafe.Pointer warning in goparakeetcpp.go. It predates this branch.

Notes for Reviewers

Commits carry Assisted-by trailers and no Signed-off-by, per the AI contribution policy. The submitter adds sign-off.

Signed commits

  • Yes, I signed my commits.
  • Documentation updated (docs/content/) for user-facing changes, or not applicable

🤖 Generated with Claude Code

mudler added 4 commits October 3, 2026 22:05
The backend now serves the VAD gRPC call (POST /vad and /v1/vad) with the
standalone VAD of libparakeet. It accepts a Silero VAD GGUF as the model
file, or an ASR model with a VAD head (Moondream Ultra and Redux). The
request audio is float32 PCM at 16 kHz; the response lists the speech
segments in seconds, like the silero-vad backend. A model with neither
fails the request with the library message.

The vad_threshold, vad_min_pause, vad_min_speech, vad_speech_pad and
vad_max_segment options tune the segmenter. Unset values keep the
defaults of the detector in use, and a bad value fails the load.

The vad_model option names a Silero GGUF, resolved against the models
directory like the other companion files. It lets any ASR model cut long
audio at pauses through parakeet_capi_transcribe_path_json_vad_with, and
it implies vad. vad:true alone still uses the model's own head.

The new symbols are probed like the existing optional ones. A library
without them still loads; the feature that needs one fails with a clear
message only when it is used.

Assisted-by: Claude:claude-sonnet-5-5 [go test]
Add VAD-only entries for the parakeet-cpp backend: the VAD heads of
Moondream Redux (packed, CPU) and Ultra (Q8_0), which share their files
with the existing ASR entries, and Silero VAD v6.2.3 as a GGUF (MIT,
Silero Team). The parakeet-cpp-vad entry installs Silero; it has no variants,
because variant ranking prefers the larger build that fits and these are
different detectors.

Add parakeet-cpp-tdt-0.6b-v3-silero-vad, a v3 entry that sets vad_model
so long audio is cut at pauses by Silero.

The Silero GGUF entries point at the intended Hugging Face URL of the
file; the existing silero-vad entries are unchanged. A test checks the
usecases, the shared files and the default entry and the vad_model reference.

Assisted-by: Claude:claude-sonnet-5-5 [go test]
Document the VAD endpoint on the parakeet-cpp backend (Silero GGUF and
the VAD heads of Moondream Ultra and Redux), the vad_* tuning options,
and the vad_model option that lets an ASR model without a VAD head cut
long audio with Silero.

Assisted-by: Claude:claude-sonnet-5-5
Pin the release that adds the standalone VAD (Ultra/Redux head and
Silero) and the C API calls the backend now uses.

Assisted-by: Claude:claude-sonnet-5-5
@mudler
mudler merged commit 6c718fd into master Oct 3, 2026
69 of 73 checks passed
@mudler
mudler deleted the feat/parakeet-vad branch October 3, 2026 23:02
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