Skip to content

feat(vad): route the Silero VAD session through the EP-aware builder; CoreML full-coverage smoke - #35

Merged
ekhodzitsky merged 1 commit into
masterfrom
feat/coreml-all-sessions
Jul 10, 2026
Merged

ekhodzitsky merged 1 commit into
masterfrom
feat/coreml-all-sessions

Conversation

@ekhodzitsky

Copy link
Copy Markdown
Owner

Closes the last gap in EP coverage: the Silero VAD session was the only ort::Session still built outside onnx::build_session_with_ep, so it could not honor a selected execution provider while every other session could.

What changed

  • SileroVad::with_ep(path, chunk_size, ep) — the session goes through the shared EP-aware builder (header validation before ort, warn-and-CPU-fallback for unwired providers, consistent with every other ONNX session). new() keeps its exact signature and the historical CPU default — the module contract's escalation item ("changes to constructor signature") is respected, and the contract documents the addition.
  • coreml_full_pipeline_smoke — macOS-aarch64 + coreml integration test (#[ignore], needs the model cache): builds the full v2 pipeline with ExecutionProvider::CoreMl, diarizes the bundled 26s clip end-to-end, and runs a CoreML VAD session with real probability assertions. Proves no session is left silently on CPU when CoreML is requested (CoreML partitions unsupported ops to CPU per-session — expected and non-fatal).
  • Session audit is clean: rg 'Session::builder' src/ matches only inside build_session_with_ep.

Verification

  • Smoke test passes locally on M1 (8s, real models).
  • cargo nextest run --all-features: 425 passed; clippy -D warnings + fmt clean.

🤖 Generated with Claude Code

… CoreML full-coverage smoke

The Silero VAD session was the last ort::Session built outside
onnx::build_session_with_ep — the one diarization-path session that could
not honor a selected execution provider.

- SileroVad::with_ep(path, chunk_size, ep) builds through the shared
  helper (header validation + warn-and-CPU-fallback for unwired
  providers, same as every other session). new() keeps its signature and
  the historical CPU default, per the module contract's escalation
  policy; the contract records the change.
- New macOS-aarch64 + coreml integration test
  (coreml_full_pipeline_smoke, #[ignore], needs the model cache): builds
  the full v2 pipeline with ExecutionProvider::CoreMl, diarizes the
  bundled clip end-to-end, and runs a CoreML VAD session — proving every
  ONNX session accepts the EP. Passes locally on M1 in 8s.
- Session audit is now clean: the only Session::builder call in src/
  lives inside build_session_with_ep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ekhodzitsky
ekhodzitsky merged commit becb2ca into master Jul 10, 2026
13 checks passed
@ekhodzitsky
ekhodzitsky deleted the feat/coreml-all-sessions branch July 10, 2026 15:34
ekhodzitsky added a commit that referenced this pull request Jul 31, 2026
… CoreML full-coverage smoke (#35)

The Silero VAD session was the last ort::Session built outside
onnx::build_session_with_ep — the one diarization-path session that could
not honor a selected execution provider.

- SileroVad::with_ep(path, chunk_size, ep) builds through the shared
  helper (header validation + warn-and-CPU-fallback for unwired
  providers, same as every other session). new() keeps its signature and
  the historical CPU default, per the module contract's escalation
  policy; the contract records the change.
- New macOS-aarch64 + coreml integration test
  (coreml_full_pipeline_smoke, #[ignore], needs the model cache): builds
  the full v2 pipeline with ExecutionProvider::CoreMl, diarizes the
  bundled clip end-to-end, and runs a CoreML VAD session — proving every
  ONNX session accepts the EP. Passes locally on M1 in 8s.
- Session audit is now clean: the only Session::builder call in src/
  lives inside build_session_with_ep.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ekhodzitsky added a commit that referenced this pull request Jul 31, 2026
… CoreML full-coverage smoke (#35)

The Silero VAD session was the last ort::Session built outside
onnx::build_session_with_ep — the one diarization-path session that could
not honor a selected execution provider.

- SileroVad::with_ep(path, chunk_size, ep) builds through the shared
  helper (header validation + warn-and-CPU-fallback for unwired
  providers, same as every other session). new() keeps its signature and
  the historical CPU default, per the module contract's escalation
  policy; the contract records the change.
- New macOS-aarch64 + coreml integration test
  (coreml_full_pipeline_smoke, #[ignore], needs the model cache): builds
  the full v2 pipeline with ExecutionProvider::CoreMl, diarizes the
  bundled clip end-to-end, and runs a CoreML VAD session — proving every
  ONNX session accepts the EP. Passes locally on M1 in 8s.
- Session audit is now clean: the only Session::builder call in src/
  lives inside build_session_with_ep.
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.

1 participant