← all repositories
kouhxp/yapsnap

Transcription that stays on your laptop and off your cloud bill

yapsnap turns any video URL or audio file into plaintext on plain CPU, with optional timestamps and speaker labels — no GPU, no API keys.

★427 stars Python Image · Video · Audio
Collecting fresh signals — velocity needs a few days of history.
star history

What it does Point it at a YouTube link, a TikTok, an X video, or a local file, and it writes a UTF-8 .txt transcript next to your shell. The whole pipeline is local: yt-dlp fetches, ffmpeg decodes to 16 kHz mono, and a streaming Zipformer transducer (Kroko, INT8 ONNX, ~80 MB) does the recognition on CPU. It claims several-times-realtime speed on a laptop, and it’s fully offline after the first model download.

The interesting bit Language detection is a neat bit of thrift: a whisper-tiny language-ID head pruned to ten languages listens to two 5-second samples cut at ~15% and ~55% into the file, and auto-fetches the matching Kroko model. The autotuning is also unusually thoughtful — it counts physical cores, not hyperthreads, because oversubscribing actually slows ONNX down.

Key highlights

  • Ten languages (German, English, Spanish, French, Italian, Hebrew, Dutch, Portuguese, Swedish, Turkish), auto-detected by default; pin with --lang fr.
  • --timestamps emits [MM:SS] per sentence, correctly scaled even when audio is pre-sped-up 1.4x (the default, pitch-preserved).
  • --diarize adds SPEAKER_00-style labels via a second ONNX pass — still no PyTorch, no cloud SDKs.
  • Runtime deps are just sherpa-onnx, numpy, and yt-dlp (plus ffmpeg on PATH).
  • Works on macOS, Linux, and Windows; output lands in ./transcripts/ by default.

Caveats

  • Speaker labels are per-run only — SPEAKER_00 in one file has no relation to SPEAKER_00 in another.
  • The default 1.4x speedup trades some accuracy on hard audio; --speed 1.0 opts out.
  • yt-dlp is deliberately unpinned, so URL fetching depends on keeping it current.

Verdict Great fit if you want quick, private, dependency-light transcripts of talks, podcasts, or meetings without provisioning anything. Skip it if you need languages beyond the ten supported or speaker identity that persists across files.

Frequently asked

What is kouhxp/yapsnap?
yapsnap turns any video URL or audio file into plaintext on plain CPU, with optional timestamps and speaker labels — no GPU, no API keys.
Is yapsnap open source?
Yes — kouhxp/yapsnap is open source, released under the Apache-2.0 license.
What language is yapsnap written in?
kouhxp/yapsnap is primarily written in Python.
How popular is yapsnap?
kouhxp/yapsnap has 427 stars on GitHub.
Where can I find yapsnap?
kouhxp/yapsnap is on GitHub at https://github.com/kouhxp/yapsnap.

heatdrop uses Google Analytics to see which pages get read — nothing else. Your call. How we handle data.