Steps
- Install peepshow + whisper.cpp
Both are stand-alone CLIs.
npm install -g peepshow brew install whisper-cpp - Run peepshow on the video
Audio extraction + transcription happen automatically when whisper.cpp is found on PATH.
peepshow ./meeting.mp4 - Read the transcript
The JSON manifest contains `transcript.text` and per-segment timings.
peepshow ./meeting.mp4 --emit json | jq '.transcript.text' - Pick a model size
Default = `base`. Use `large-v3` for accuracy or `tiny.en` for speed.
PEEPSHOW_WHISPER_MODEL=large-v3 peepshow ./meeting.mp4
Why it works
Whisper-on-cloud (OpenAI Whisper API, AssemblyAI, Deepgram) sends every byte of audio to a third party. For meetings, medical content, legal interviews — that's a privacy non-starter. peepshow + whisper.cpp runs the same model class entirely offline. The cloud providers stay one flag away if you want them.
When it helps
- Meetings, interviews, depositions where audio shouldn't leave the box.
- Air-gapped workflows (research labs, regulated industries).
- High-volume transcription where API costs add up fast.
Pitfalls
- `whisper.cpp` doesn't ship via npm — install via brew / apt / source.
- Larger models (`large-v3`) need 4-8GB RAM. `base` works on a laptop.
- Disable telemetry with `PEEPSHOW_TELEMETRY=0` for a fully offline pipeline.