feat(scriberr): overlap-and-stitch Parakeet slicer patch, rebuild script, bench
Carry patches/0001 on our Scriberr build (upstream a353078): adjacent buffered chunks overlap by 4 s inside --chunk-len and hand over at a word both chunks transcribed alike, instead of cutting at fixed marks with no overlap. Pause-aware cutting is included as an opt-in (--pause-search); it measured neutral once the stitch was right. The Go<->Python CLI and JSON seam is unchanged. Bench (4 recordings, 118 min, 3 cut placements each, against a no-cut whole-file reference; metrics only, private audio stays on fv-ml1): cuts with an error within +-3 s fall from 52% (93/179) to 22% (41/184) against a 19% background; floor +-0.08. Positive control: upstream's cutter +0.33 over background. A-vs-A byte-identical in-process and across CLI processes. Peak GPU memory unchanged at 5,496 MiB (n=3). Also found: Parakeet skips runs of >=10 words mid-chunk with any slicer, upstream's included; not addressed here. scripts/scriberr-rebuild clones a pinned upstream sha into a new /opt/docker/src dir, git-apply-checks the patches, builds a distinct tag, and checks embed, unit tests, the JSON seam (scriberr-seam-check.py) and the memory budget on idle GPU 3. Deploy stays manual. The upstream PR is prepared under patches/upstream-pr/ and not opened.
This commit is contained in:
@@ -27,15 +27,21 @@ image** — it will fail on these cards or quietly fall back to CPU.
|
||||
|
||||
### Rebuilding
|
||||
|
||||
We carry local patches (`patches/`, currently the pause-aware Parakeet
|
||||
slicer), so a rebuild is one command from nh3-dev, pinned to an upstream sha:
|
||||
|
||||
```bash
|
||||
ssh fv-ml1
|
||||
cd /tank/scriberr/src/Scriberr
|
||||
git pull
|
||||
docker build -f Dockerfile.cuda.12.9 -t scriberr:local-blackwell .
|
||||
cd /opt/docker/compose/scriberr && docker compose up -d
|
||||
scripts/scriberr-rebuild --sha <full upstream sha> --suffix slicer1
|
||||
```
|
||||
|
||||
Source checkout lives on `/tank`, not the root pool — see storage below.
|
||||
It makes a clean clone in `/opt/docker/src/scriberr-<sha7>-<suffix>` on
|
||||
fv-ml1, `git apply --check`s the patches (a conflict stops it), builds
|
||||
`scriberr:local-blackwell-<sha7>-<suffix>` beside the old images, and checks
|
||||
the embed, the unit tests, the Go↔Python JSON seam, and the GPU memory budget.
|
||||
Deploying it is a separate manual step: `patches/README.md` § Deploy.
|
||||
|
||||
The old checkout at `/tank/scriberr/src/Scriberr` (lkraven-owned, shallow)
|
||||
built the original `scriberr:local-blackwell` and is left as it was.
|
||||
|
||||
## Deploy
|
||||
|
||||
@@ -62,7 +68,7 @@ mounts are bind-mounted onto `/tank` (4+ TB) instead of named volumes:
|
||||
|---|---|---|
|
||||
| `/tank/scriberr/data` | `/app/data` | SQLite DB, uploads, transcripts |
|
||||
| `/tank/scriberr/whisperx-env` | `/app/whisperx-env` | Python env + model weights |
|
||||
| `/tank/scriberr/src/Scriberr` | — | build checkout |
|
||||
| `/tank/scriberr/src/Scriberr` | — | original build checkout (patched builds: `/opt/docker/src/scriberr-<sha7>-<suffix>`) |
|
||||
|
||||
Both are owned by uid/gid 1000 to match `PUID`/`PGID`.
|
||||
|
||||
@@ -164,3 +170,11 @@ Peak GPU memory on a 35-minute file:
|
||||
- The two env knobs are read by upstream's Go code (`parakeet_adapter.go`), so
|
||||
they survive image upgrades for as long as upstream keeps them. Re-measure the
|
||||
peak after any upgrade.
|
||||
- **The slicer itself is patched** (`patches/0001-parakeet-pause-aware-slicer.patch`,
|
||||
2026-09-30). Adjacent 120 s slices now overlap by 4 s and are stitched at a word
|
||||
both transcribed, which cut the share of cuts with an error nearby from 52 % to
|
||||
22 % against a 19 % background. The overlap sits *inside* the 120 s, so the
|
||||
peak is unchanged (5,496 MiB, n=3). See `patches/README.md` and
|
||||
`docs/pfi/scriberr-slicer-bench-2026-09-30.md`. That bench also found that
|
||||
Parakeet sometimes skips stretches of ≥10 words mid-slice, with or without the
|
||||
patch; that is still open.
|
||||
|
||||
Reference in New Issue
Block a user