From efd31b4ef149b25cc93054c94039173a1f43e676 Mon Sep 17 00:00:00 2001 From: Vuong Hoang Date: Tue, 6 Oct 2026 13:36:31 -0700 Subject: [PATCH] docs(scriberr): saved GPU+speaker profiles; first diarized job after the fixes --- persistent-memory.md | 2 +- stacks/scriberr/README.md | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/persistent-memory.md b/persistent-memory.md index aab8de1..a9e9b19 100644 --- a/persistent-memory.md +++ b/persistent-memory.md @@ -176,7 +176,7 @@ Every vLLM seat on a shared card (GPU 0, GPU 1) has byte-pinned KV (`--kv-cache- ### Scriberr (fv-ml1 GPU 3) -- **Diarization FIXED 2026-10-06 ~1320 (Prime: "whisper doesn't work at all, need diarized transcripts").** Three faults: no `HF_TOKEN` (pyannote is gated). FINAL: the gated models were downloaded once, caches moved to /tank (`HF_HOME`/`TORCH_HOME`/`NLTK_DATA` under `/app/whisperx-env`), and `HF_TOKEN` is a placeholder (Prime 1330: "move the downloads and drop the token"). Cached gated models load with an invalid token; a NEW gated model needs one download with vault `fv-ml1/hf-token`. torchcodec 0.16 in the pyannote env against torch 2.8 (`AudioDecoder` undefined; pinned to 0.7 by hand, durable as `patches/0003`, applied at the next rebuild); and the WhisperX adapter's CPU/small/float32 defaults. Both diarization paths verified on GPU 3. → `stacks/scriberr/README.md` § Diarization +- **Diarization FIXED 2026-10-06 ~1320 (Prime: "whisper doesn't work at all, need diarized transcripts").** Three faults: no `HF_TOKEN` (pyannote is gated). FINAL: the gated models were downloaded once, caches moved to /tank (`HF_HOME`/`TORCH_HOME`/`NLTK_DATA` under `/app/whisperx-env`), and `HF_TOKEN` is a placeholder (Prime 1330: "move the downloads and drop the token"). Cached gated models load with an invalid token; a NEW gated model needs one download with vault `fv-ml1/hf-token`. Saved profiles added: `WhisperX large-v3 · GPU · speakers` and `Parakeet · GPU · speakers`. Prime's 1 h transcript finished diarized at 1336 (3 speakers, 3m30s). ⚠ My 1330 recreate killed his 1326 run (an idle check that printed but did not gate); see auto-memory `feedback_idle_check_must_gate_the_restart`. torchcodec 0.16 in the pyannote env against torch 2.8 (`AudioDecoder` undefined; pinned to 0.7 by hand, durable as `patches/0003`, applied at the next rebuild); and the WhisperX adapter's CPU/small/float32 defaults. Both diarization paths verified on GPU 3. → `stacks/scriberr/README.md` § Diarization - **LIVE `scriberr:local-blackwell-a353078-dropout2`:** upstream a353078 plus patch 0001 (overlap slicer) and patch 0002 (gap retry, `PARAKEET_MODEL_PATH`), carried LOCALLY ONLY (Prime 2026-10-01: no upstream). v3 stays. `scripts/scriberr-rebuild` re-applies both. → `persistent-memory.d/2026-09-30-scriberr-slicer-gap-retry-gpu3.md` - **URL is https://scriberr.nh3.phasefinal.com since 2026-10-01** (fronted by the fleet TLS caddy on nh3-dev; Caddyfile backup `.bak-20261001-scriberr`). Prime's "can't initialize recorder" was the SecureContext rule: `getUserMedia` is refused on http://. The HTTPS name is in `ALLOWED_ORIGINS` (`playbooks/scriberr-https-origin.yaml`); http://10.251.50.54:8080 still works except for recording. ⚠ `/opt/docker/compose/scriberr` is lkraven-owned, so `deploy-stack.sh` as infra-ops FAILS there (Permission denied); upload single files with `elway --upload --sudo --owner lkraven:lkraven`. diff --git a/stacks/scriberr/README.md b/stacks/scriberr/README.md index b0c3ed5..2e66153 100644 --- a/stacks/scriberr/README.md +++ b/stacks/scriberr/README.md @@ -144,6 +144,8 @@ Prime: "whisper doesn't work at all, and I need diarized transcripts." There wer **Re-verified with the placeholder token and the /tank cache (60 s clip): community-1 exited 0 in 8 s, WhisperX+3.1 exited 0 in 28 s, both 2 speakers, with no downloads and no 401s.** First verification, with the real token, on a 4-min multi-speaker clip of a real upload, GPU 3: WhisperX large-v3/cuda/float16 + `pyannote/speaker-diarization-3.1` exited 0 in 65 s with 2 speakers. The pyannote env script with `speaker-diarization-community-1` (the adapter's only option, used by the Parakeet profile) exited 0 in 11 s with 3 speakers. The two pipelines disagree on the speaker count, so set min/max speakers when you know it. WhisperX's own env (pyannote.audio 4.0.4) loads 3.1 fine and feeds the pipeline in-memory audio, so it never needed torchcodec. +**Saved profiles (Prime, 2026-10-06):** `WhisperX large-v3 · GPU · speakers` (whisper, large-v3, cuda, float16, batch 16, pyannote 3.1) and `Parakeet · GPU · speakers` (Parakeet TDT 0.6B, English, pyannote community-1). Both were inserted straight into `transcription_profiles` as uid 10001, with no restart. Backup: `/tank/scriberr/data/scriberr.db.bak-20261006-profiles`. The older `ParakeetEng` profile was left as it was. **First real job after the fixes:** Prime's 1-hour upload with Parakeet + pyannote finished in 3m30s (transcription 46 s, 11,985 words; diarization 2m38s, 3 speakers). + ## Optional: summarisation via the LiteLLM gateway Scriberr speaks the OpenAI API, so point it at the fleet gateway instead of a