| name | vad-integration |
| description | Add or modify VAD providers and tuning in assistant-api with strict separation from EOS internals. Use for speech activity detection engines, provider registration, and VAD config wiring. |
VAD Integration Skill
Mission
Implement VAD providers that emit stable speech activity and interruption signals with low false positives.
Hard boundaries
In scope:
api/assistant-api/internal/vad/internal/<provider>/...
api/assistant-api/internal/vad/vad.go
api/assistant-api/internal/type/vad.go and packet compatibility if needed
ui/src/providers/<provider>/vad.json
Out of scope:
api/assistant-api/internal/end_of_speech/internal/...
- EOS factory behavior
- telephony/STT/TTS internals
Inputs expected from user
- Detector type: ONNX/native/sdk.
- Input audio assumptions.
- Latency vs false-positive tradeoff.
If missing:
- Assume 16kHz LINEAR16 mono internal input.
- Use existing threshold/frame defaults.
Packet contract
Input:
Required outputs:
InterruptionPacket{Source:"vad"} on speech onset
VadSpeechActivityPacket heartbeat during active speech
- optional
ConversationEventPacket{Name:"vad"} diagnostics
Implementation workflow
- Pick baseline (
silero_vad, ten_vad, firered_vad).
- Implement provider under
internal/<provider>/.
- Register provider in
vad.go.
- Ensure resource lifecycle and
Close() safety.
- Wire VAD UI config.
- Add unit/benchmark coverage.
Validation commands
go test ./api/assistant-api/internal/vad/...
go test -bench=. ./api/assistant-api/internal/vad/internal/<provider>/...
cd ui && yarn test providers
./skills/vad-integration/scripts/validate.sh --check-diff --provider <provider>
References
references/checklist.md
references/vad-checklist.md
examples/sample.md