# Whisper track — self-transcription feasibility for tapir (recon, 2026-06-02)

Investigated inline by the Conductor (sub-agents are network-sandboxed this session).
Context: ADR-007 deferred audio-download + STT for (a) yt-dlp fragility, (b) ToS, (c) GPU
contention with the JEPA PoC on koala. With ADR-010 (timedtext captions) now landed and
working, Whisper is a **fallback for videos with NO captions**, not the primary path.

## What exists on the infra (verified from koala)

- **koala host has NONE of the tooling**: no `ffmpeg`, no `yt-dlp`, no `whisper` /
  `whisper.cpp` / `faster-whisper` / `mlx_whisper`. Only `python3`. Audio extraction would
  need a container/pod that bundles yt-dlp + ffmpeg.
- **Host GPU is currently unusable**: `nvidia-smi` → "Driver/library version mismatch"
  (NVML 610.43). The RTX 5070 is reachable only via k3s pods with `runtimeClassName: nvidia`
  (matches the known koala-GPU brain note), not from the host.
- **A Whisper model is ALREADY on the gateway**: `berget/whisper-large-v3` is served via
  LiteLLM (`http://koala:30401/v1`). BUT `berget/` = berget.ai = **cloud (EU)**. Using it
  ships audio off-box — acceptable under the homelab's berget-as-trusted-fallback posture,
  but NOT "local-first" in the strict VISION sense.
- **iguana** has `mlx-whisper` (per infra docs) — a local Mac-GPU option, no contention with
  koala's JEPA PoC — but it is **not exposed on the gateway** and its availability is
  uncertain (prior notes had iguana offline at times). Needs-verification.

## The pipeline Whisper would require
1. **Audio extraction**: `yt-dlp -f bestaudio` + `ffmpeg` to wav/16k. yt-dlp is exactly the
   ToS-grey + breakage risk ADR-007 named. Volume matters: full-audio download for many
   candidates is far heavier (bandwidth + time) than fetching caption text.
2. **Transcription compute** — three options:
   - **A. berget/whisper-large-v3 (cloud, ready now)** — zero new infra, fast, but external;
     gate as opt-in per the local-first principle.
   - **B. Local GPU whisper pod on koala** (nvidia runtime) — true local, but: deploy work +
     GPU contention with JEPA (ADR-007's stated reason) + the driver-mismatch to sort.
   - **C. iguana mlx-whisper** — local, no koala-GPU contention, but needs exposing + uptime.

## Verdict
- **Whisper is viable but remains a deferred fallback, and it reverses a settled ADR** — so
  it needs a new ADR (extends/supersedes ADR-007's deferral) before building.
- **Lowest-effort path if/when pursued**: route no-caption videos' audio to the existing
  `berget/whisper-large-v3` on the gateway, behind an explicit opt-in flag (it's cloud).
  Local purity → iguana mlx-whisper or a koala nvidia whisper pod, both more setup.
- **Priority**: LOW right now. ADR-010 timedtext captions already cover captioned videos
  (the bulk of the maintainer's subs). Whisper only buys the no-caption tail — measure how
  big that tail actually is (the run's `skipped_no_text` count) before investing.

**Biggest risks:** (1) yt-dlp fragility + ToS (the original ADR-007 objection, unchanged);
(2) audio-download volume/latency vs. caption-text; (3) "local-first" is only truly honored
by options B/C, both of which carry real setup/contention cost.
