dash.ohn.sh — Automated content filtering powered by Silero VAD
For a new project, I have a video processing pipeline that prepares raw camera footage for publishing, extracts metadata, and syncs everything to a Cloudflare R2 bucket. The newest feature is voice activity detection with Silero VAD, which I’m running on the CPU via onnxruntime-node. Here it is taking around 20 seconds to analyze several hours of footage on my Mac Mini.
The model takes a tensor representing 512 samples of 16-kHz, single-channel audio (roughly 30 ms) and returns a score indicating the probability that the window contains speech (“voice activity”). In the pipeline, audio is extracted from source recordings and normalized with ffmpeg, then fed through the model piece by piece. The raw scores are filtered through a state machine (during a speech segment, a given sample is more likely to register as speech) to produce a list of timestamps representing segments of the video that contain speech.
Git Commits
dash commits 3
ohnsh/dash-
2:30 pm — John Sherrell <dev@ohn.sh>
next,vod: add optional `tags` array to VODVideo schema, surface videos with the property on the root route along with those with detected speech.
-
1:21 pm — John Sherrell <dev@ohn.sh>
next: change format and style of VODPlayer timestamp. It's now absolutely positioned within the video frame, at bottom right.
-
10:27 am — John Sherrell <dev@ohn.sh>
next: handle wyze filenames (HH.mp4) when computing timestamps by falling back to a function that takes a date and filename. Pass the current inventory record to the thumbstrip component rendering it so that it can be filtered on the client.
days commits 1
ohnsh/days-
4:25 pm — John Sherrell <dev@ohn.sh>
New post about Silero VAD, bump Astro version.