RunAnywhere.vad answers “is someone talking right now”. It is what a voice interface uses to
decide when a turn has ended.
Signatures
React Native has no vad.openStream and no vad.reset(). The push-shaped VadStream exists
on Swift, Kotlin, Web, and Electron, but not here. Use detectStream.
Streaming
Building the audio iterable is the same problem as in
streaming STT, and the same generator works for both.
Options
minSilenceMs is the one to tune. Too short and the assistant interrupts someone who paused;
too long and it feels sluggish.
prefixPaddingMs matters because detection lags the first syllable. Without padding, “hello”
reaches the transcriber as “ello”.
You may not need this
For a spoken conversation, use the voice session. It runs VAD,
transcription, generation, and speech together, with turn-taking and interruption wired up.