# Feature: Live Transkripsjon (Whisper-pipeline) **Filsti:** `docs/features/live_transkripsjon.md` ## 1. Konsept Den felles Whisper-pipelinen som brukes av flere konsepter for å transkribere lyd. Abstraherer bort konfigurasjonsforskjeller (modellvalg, latenskrav) bak et felles grensesnitt. ## 2. Moduser | Kontekst | Modell | Latenskrav | initial_prompt | Output | |---|---|---|---|---| | **Studioet** (live) | `small` | <1s per chunk | Nei (hastighet prioritert) | Flyktig tekst → NER-pipeline | | **Møterommet** (live) | `small` | <1s per chunk | Nei | Flyktig tekst → AI-referent | | **Podcastfabrikken** (batch) | `medium` + prompt | Ingen (asynkront) | Ja (navneliste) | SRT → Git → PG | ## 3. Teknisk arkitektur 1. **Lydkilde:** LiveKit server-side hooks (live) eller filopplasting (batch). 2. **Whisper-server:** `fedirz/faster-whisper-server` (Docker, OpenAI-kompatibelt API). Endepunkt: `POST /v1/audio/transcriptions`. 3. **Chunking (live):** Rust-tjeneste mater lyd i ~5-sekunders chunks. `small`-modellen prosesserer ~5x raskere enn sanntid, noe som gir <1s forsinkelse per chunk. 4. **Output:** SRT (batch) eller ren tekst (live). ## 4. Whisper-konfigurasjon * **Språk:** Sett `language=no` eksplisitt for norsk — unngå auto-detect som kan velge dansk/svensk. * **`large-v3`** KREVER `vad_filter=true` — uten hallusinerer modellen repeterende tekst. * **Benchmark og modellvalg:** Se `docs/concepts/podcastfabrikken.md` seksjon 4 for ytelsestall og anbefalinger. ### 4.1 initial_prompt (navneliste) Brukes kun i batch-modus (Podcastfabrikken). Prompten bygges automatisk fra samlings-nodens metadata (`metadata.whisper_prompt`) + entiteter i kunnskapsgrafen. Effekten er tydelig: * Uten prompt: "Vegard Nøgnes", "SideLinja", "Sidlinja" * Med prompt: "Vegard Nøtnæs", "Sidelinja" (riktig) ## 5. Lagring * **Live-modus:** Transkripsjonen er flyktig (kategori 4, TTL 30 dager). Lagres i `live_transcription_log` for feilsøking. * **Batch-modus:** SRT committes til Git (Forgejo). Avledede formater (ren tekst, segmenter, søkeindeks) i PostgreSQL. ## 6. Instruks for Claude Code * Live transkripsjon blokkerer ALDRI web-requests — prosesseres i Rust-worker eller separat tjeneste. * Batch-transkripsjon kjøres som `whisper_transcribe`-jobb i jobbkøen (se `docs/infra/jobbkø.md`). * Config (prompts) hentes fra samlings-nodens metadata (JSONB).