Update Handoff (Whisper fallback) and document CLI transcription in README
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01P1w53ybPWArpZpcei9JPYX
This commit is contained in:
parent
a3eb962b90
commit
592a235cf9
24
Handoff.md
24
Handoff.md
@ -3,7 +3,8 @@
|
||||
> Übergabedokument für die Fortsetzung in einer Claude-Code-Session.
|
||||
> Stand: 2026-08-29 — App läuft produktiv auf Gisela unter
|
||||
> http://172.30.1.11:3300 (nur internes Netz), Downloads nach
|
||||
> `/home/stwaidele/YouTube/<Titel>/`; live verifiziert per Testdownload.
|
||||
> `/home/stwaidele/YouTube/<Titel>/`. Neu: Whisper-Transkriptions-Fallback
|
||||
> für Videos ohne Untertitel, live verifiziert (archive.org, RTX 3080).
|
||||
> Dauerhafte Fakten stehen in `README.md`/`INSTALL.md`; hier steht nur, was
|
||||
> **nicht** aus Code und Git-Historie ersichtlich ist.
|
||||
|
||||
@ -43,6 +44,27 @@ Arbeitskopie auf Gisela: `/home/stwaidele/Claude/yt-dlp` (Verzeichnisname
|
||||
führende Wiederholungszeilen (`src/lib/subtitle.js`,
|
||||
`scripts/subtitle_to_markdown.py`, beide identisch halten!).
|
||||
|
||||
## Session 2026-08-29 — Whisper-Fallback für Videos ohne Untertitel (Claude Fable 5)
|
||||
|
||||
Auftrag: Plattformen ohne Untertitel (Instagram & Co.) sollen trotzdem
|
||||
Transkripte liefern. Umsetzung: `scripts/transcribe.py` (faster-whisper,
|
||||
`large-v3-turbo`, CUDA mit CPU-Fallback) + Hook in
|
||||
`src/routes/api/download/+server.js` — springt nur an, wenn der Download
|
||||
keine `.vtt`/`.srt` hinterlässt; die VTT läuft danach durch die normale
|
||||
MD-Konvertierung. venv liegt in `.venv/` (gitignored, Python 3.13,
|
||||
**nicht** das Linuxbrew-Python 3.14 — dafür gab es keine
|
||||
ctranslate2-Wheels). cuDNN/cuBLAS kommen aus pip und werden im Script per
|
||||
`ctypes.CDLL(RTLD_GLOBAL)` vorgeladen, damit kein `LD_LIBRARY_PATH` in
|
||||
der systemd-Unit nötig ist. Modell-Cache: `~/.cache/huggingface` (~1,6 GB,
|
||||
bereits geladen). Live verifiziert: archive.org „Duck and Cover"
|
||||
(E2E über die API, Fallback sprang an, Transkript einwandfrei) und
|
||||
Direktlauf auf GPU (`cuda`, Spracherkennung en p=1.00). Testerkenntnis:
|
||||
**Vimeo verlangt inzwischen Login** und taugt nicht mehr als
|
||||
Test-Plattform; archive.org funktioniert. Nebenwirkung des Direkttests:
|
||||
`~/YouTube/Me at the zoo/Me at the zoo.en.vtt` ist jetzt die
|
||||
Whisper-Version statt der YouTube-Caption (im echten Betrieb kein Thema,
|
||||
Fallback läuft nur ohne vorhandene Untertitel).
|
||||
|
||||
## Session 2026-08-29 — Deploy auf Gisela (Claude Fable 5)
|
||||
|
||||
Auftrag: yt-dlf auf Gisela betreiben, Weboberfläche nur im
|
||||
|
||||
24
README.md
24
README.md
@ -50,6 +50,30 @@ To use a custom port:
|
||||
PORT=8080 npm run dev
|
||||
```
|
||||
|
||||
## Standalone transcription
|
||||
|
||||
Transcribe any local video/audio file to WebVTT directly from the terminal
|
||||
(requires the faster-whisper venv, see `INSTALL.md`):
|
||||
|
||||
```bash
|
||||
.venv/bin/python scripts/transcribe.py video.mp4
|
||||
```
|
||||
|
||||
The language is detected automatically and the subtitle file is written next
|
||||
to the input as `video.<lang>.vtt` (e.g. `video.de.vtt`). Model and device can
|
||||
be overridden via environment variables:
|
||||
|
||||
```bash
|
||||
WHISPER_MODEL=large-v3 .venv/bin/python scripts/transcribe.py video.mp4 # best quality
|
||||
WHISPER_DEVICE=cpu .venv/bin/python scripts/transcribe.py video.mp4 # don't touch the GPU
|
||||
```
|
||||
|
||||
To get a Markdown transcript, feed the VTT through the subtitle converter below:
|
||||
|
||||
```bash
|
||||
./scripts/subtitle_to_markdown.py video.de.vtt
|
||||
```
|
||||
|
||||
## Standalone subtitle converter
|
||||
|
||||
Convert a `.vtt` or `.srt` subtitle file to Markdown directly from the terminal:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user