Files
searchi/tools/speech-vad

CPU speech-activity diagnostic

Research tooling, separate from searchi's normal GPU-capable runtime. No model download, transcription, source indexing or product default is changed. Use the frozen source and model hashes in the protocol.

cmake -S tools/speech-vad -B .searchi/speech/build-vad-diagnostic -DWHISPER_SOURCE=/absolute/path/to/pinned/whisper.cpp
cmake --build .searchi/speech/build-vad-diagnostic --config Release --parallel 1

Run searchi-vad-diagnostic MODEL PCM_F32LE, retaining stdout and stderr separately. Independently verify the model SHA-256 before running. Input must be verified mono 16-kHz little-endian float32 PCM, at most ten minutes, with finite normalized samples. CPU and one inference thread are fixed. Native error logs invalidate detection even when upstream returns success. Probability count must match the pinned 512-sample inference framing.

Output JSON retains every probability and raw centisecond interval, source sample count and load/detection/segmentation milliseconds. Interval padding is already applied. Preserve this raw output; a subsequent harness must explicitly intersect intervals with actual decoded source samples and add the verified source origin exactly once. Do not concatenate disjoint intervals without a piecewise source map. Zero intervals are a valid no-speech decision, distinct from nonzero exit status or missing JSON.

The wrapper fixes the preregistered segmentation parameters: threshold 0.5, minimum speech 250 ms, silence 100 ms, maximum speech FLT_MAX, padding 30 ms, overlap 0.1 seconds. It does not establish model accuracy or a production speech gate. Compare the complete frozen speech/music/sound pool before judging quality; preserve original Google audio retrieval regardless of transcription.