server/docs/features/live_transkripsjon.md
vegard a5985ef3f8 Dokumentasjon, erfaringslogg, migrasjoner og infra-oppdateringer
- Omorganiser docs/: konsepter, features, infra og proposals i egne mapper
- Ny docs/erfaringer/ med lærdommer fra chat-implementering (Svelte 5, SpacetimeDB, adapter-mønster)
- Oppdater ARCHITECTURE.md: Lag 1 status, ny §10 Erfaringslogg, SpacetimeDB i lokal dev
- Oppdater synkronisering.md med implementeringsstatus og designvalg
- Oppdater lokal.md med SpacetimeDB og AI Gateway
- Utvid PG-skjema med channels, messages, media_files, message_revisions
- Legg til seed_dev.sql, migration_safety.md, .env.example
- Nye feature-specs: chat, kanban, whiteboard, live_ai, lydmeldinger m.fl.
- Nye konsept-specs: studioet, møterommet, redaksjonen, den asynkrone gjesten m.fl.
- SpacetimeDB og AI Gateway i docker-compose.dev.yml
- collect-docs.sh inkluderer erfaringer/

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 01:40:14 +01:00

2.4 KiB

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 workspace-config (workspaces.settings.whisper_prompt) + aktører i workspace-ets kunnskapsgraf.

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, ett repo per workspace). 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).
  • Workspace-spesifikk config (prompts) hentes fra workspaces.settings.