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.
|
> Übergabedokument für die Fortsetzung in einer Claude-Code-Session.
|
||||||
> Stand: 2026-08-29 — App läuft produktiv auf Gisela unter
|
> Stand: 2026-08-29 — App läuft produktiv auf Gisela unter
|
||||||
> http://172.30.1.11:3300 (nur internes Netz), Downloads nach
|
> 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
|
> Dauerhafte Fakten stehen in `README.md`/`INSTALL.md`; hier steht nur, was
|
||||||
> **nicht** aus Code und Git-Historie ersichtlich ist.
|
> **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`,
|
führende Wiederholungszeilen (`src/lib/subtitle.js`,
|
||||||
`scripts/subtitle_to_markdown.py`, beide identisch halten!).
|
`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)
|
## Session 2026-08-29 — Deploy auf Gisela (Claude Fable 5)
|
||||||
|
|
||||||
Auftrag: yt-dlf auf Gisela betreiben, Weboberfläche nur im
|
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
|
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
|
## Standalone subtitle converter
|
||||||
|
|
||||||
Convert a `.vtt` or `.srt` subtitle file to Markdown directly from the terminal:
|
Convert a `.vtt` or `.srt` subtitle file to Markdown directly from the terminal:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user