# Audio-Transkription auf ZimaOS mit faster-whisper

Für das Transkribieren von Videos (z.B. Workshop-Zusammenfassungen) nutzen wir **faster-whisper** — bereits im Hermes-venv installiert, kein PyTorch nötig.

## Voraussetzungen
- `faster-whisper` im venv: `/DATA/AppData/hermes/venv/lib/python3.11/site-packages/faster_whisper/`
- `ffmpeg` vorhanden (im System)
- `yt-dlp` vorhanden (im System)
- Cache-Dirs auf `/DATA` (nicht `/tmp`):
  - `HF_HOME=/DATA/AppData/hermes/.cache/huggingface`
  - `WHISPER_CACHE_DIR=/DATA/AppData/hermes/.cache/whisper`

## Workflow

### 1. Video herunterladen (auf SSD, nicht /tmp!)
```bash
cd /DATA/AppData/hermes/work
yt-dlp -o "video.%(ext)s" "URL"
```

### 2. Audio extrahieren
```bash
ffmpeg -i video.mp4 -vn -acodec pcm_s16le -ar 16000 -ac 1 audio.wav
```
- `-ar 16000`: 16 kHz ist der Sweet Spot für Whisper
- `-ac 1`: Mono spart Platz und ist für Sprache ausreichend

### 3. Transkribieren (Python)
```python
import os
os.environ["HF_HOME"] = "/DATA/AppData/hermes/.cache/huggingface"
os.environ["WHISPER_CACHE_DIR"] = "/DATA/AppData/hermes/.cache/whisper"

from faster_whisper import WhisperModel

model = WhisperModel("base", device="cpu", compute_type="int8",
                     download_root="/DATA/AppData/hermes/.cache/whisper")

segments, info = model.transcribe("audio.wav", beam_size=5, language="en")

# Segmente iterieren
for seg in segments:
    print(f"[{seg.start:.1f}s] {seg.text}")
```

## Modelle
| Modell | Größe | Qualität | Nutzung |
|--------|-------|----------|---------|
| `tiny` | ~39 MB | Schnell, ungenau | Nicht empfohlen |
| `base` | ~74 MB | **Sweet Spot** | Standard für DE/EN/TR |
| `small` | ~244 MB | Besser | Bei schlechter Audioqualität |
| `medium` | ~769 MB | Sehr gut | Nur bei Bedarf |
| `large-v3` | ~1.5 GB | Beste | Sehr langsam auf CPU |

## Bekannte Fehler
- **`0 Segmente` trotz langer Laufzeit**: Die Segmente sind ein Generator — muss in eine Liste gewandelt werden (`segments = list(segments)`) oder direkt iteriert werden.
- **`OSError: No space left` bei pip**: `TMPDIR=/DATA/AppData/hermes/tmp_downloads` setzen.

## Pitfalls
- **NIE** große Dateien nach `/tmp` schreiben (tmpfs, 3.9 GB RAM-Disk)
- **IMMER** `cd /DATA/AppData/hermes/work` vor Downloads
- **Modell vorab laden** bei erstem Whisper-Einsatz — Download dauert ~30s
