diff --git a/docs/SPEECH-VAD.md b/docs/SPEECH-VAD.md index 272c52d..c056cf1 100644 --- a/docs/SPEECH-VAD.md +++ b/docs/SPEECH-VAD.md @@ -141,7 +141,37 @@ and publication; reject stale output. Persist provenance and explicit completion or no-speech status. Foreground search must remain usable while ASR is pending; an already executing encode cannot be claimed preemptible on a one-thread budget. -Open gates: native VAD build, actual one-thread audit, detection/recognition +## Local diagnostic build and protocol audit + +The standalone `whisper-vad-speech-segments` Release target built successfully +on Windows on 2026-10-13 from the pinned commit above, with one build job. +Its executable SHA-256 is +`2b18297bad2ea6c87fa9f314364069b74480a6c916fa8da06fe4c8ad40c9abf6`. +The inspected CMake cache has `BUILD_SHARED_LIBS`, `GGML_BACKEND_DL`, +`GGML_CUDA`, `GGML_VULKAN`, and `GGML_METAL` all OFF. This is an internal +CPU diagnostic, not a replacement for the product's hardware-detecting runtime. +Upstream C4244 and C4267 conversion warnings remain. No detection was run. + +Source review identified further requirements before accepting measurements: + +- Stdout interval values are rounded integer centiseconds printed with float + formatting. Multiply by ten for milliseconds; stderr instead shows seconds. +- The last inference frame is zero-padded. Its interval may exceed real audio + length. Preserve the raw interval and explicitly record its intersection with + verified source samples; do not silently clamp the evidence. +- The 30-ms speech padding is already applied. Do not apply it twice. The + segmentation implementation also merges gaps below 200 ms; the overlap + parameter does not add overlap to standalone intervals. +- A graph computation failure can break detection while the API still returns + true. Probability storage is preallocated, so count and finite values alone + cannot establish completion. Capture error-level native logs and invalidate + the run on errors before using any intervals. +- Unknown or incomplete standalone CLI arguments can exit successfully. A + successful exit alone is insufficient. A diagnostic wrapper should fix CPU + mode and one thread, check segment allocation, retain probabilities and + separate model loading, detection and segmentation timings. + +Open gates: actual one-thread audit, detection/recognition comparison, ordinary and DTW timestamp regression, independent held-out quality, background starvation/cancellation/crash recovery, packaging/license review, native OS and physical GPU fallback. None is closed by this research document.