server/docs/proposals/waveforms.md
vegard 74110e842c Dokumentasjon: oppdatert arkitektur, nye proposals og konsepter
Oppdatert basert på ekstern tilbakemelding. Nye proposals for
kildevern, podcasting 2.0, web clipper, waveforms, editor,
tekst-primitiv og avisvisning. Oppdatert meldingsboks med
slette-semantikk, entity resolution i kunnskapsgrafen, og
AI gateway med kildevern-modus.

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

53 lines
2.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Forslag: Visuelle Waveforms som UI-primitiv
## Idé
Podcast handler om lyd, men i Sidelinja-editoren er lyd foreløpig kun tekst eller en usynlig boks. Generer komprimerte audio-peaks fra lydfiler og rendrer dem som visuelle bølgeformer (SoundCloud-stil) overalt der lyd refereres — i editoren, i segment-embeds, i Podcastfabrikken.
## Hvorfor er dette interessant?
- Gjør manuell redigering og verifisering av transkripsjoner mye mer intuitivt
- Tidsstempler og Aha-markører kan lyse opp oppå bølgene
- Visuell representasjon av lyd er forventet i 2026 — ren tekst føles utdatert
- `{{segment:uuid}}` i editoren kan rendres som en interaktiv bølgeform i stedet for en flat lydspiller
## Hva bygger den på?
- **Podcastfabrikken** — lydfilene og segmentene
- **Jobbkø** — ny jobbtype `generate_waveform`
- **Editor** — `{{segment:uuid}}`-embeds rendrer waveform i stedet for enkel player
- **Studioet** — Aha-markører vises oppå bølgeformen
## Gjennomføring
### 1. Generere peaks
Utvid `whisper_transcribe`-jobben (eller opprett separat `generate_waveform`-jobb) til å generere en komprimert array med audio-peaks:
```
Verktøy: audiowaveform (BBC, C++, rask) eller ffmpeg
Input: MP3/WAV
Output: JSON-array med peaks (f.eks. 800 datapunkter per minutt)
Lagring: media_files.metadata (JSONB) eller separat fil
```
### 2. Svelte-komponent: `<Waveform>`
- Rendrer peaks som SVG eller Canvas
- Klikkbar: hopp til tidspunkt i lyden
- Overlay: Aha-markører, segment-grenser, talerskifter
- Responsiv: tilpasser seg containerbredde
- Brukes i: editor-embeds, Podcastfabrikken, segment-visning
### 3. Editor-integrasjon
`{{segment:uuid}}` i rendered-modus viser:
```
┌──────────────────────────────────────────┐
│ ▶ Episode 42, 14:2321:07 │
│ ░▓▓░▓▓▓░░▓▓░▓░░▓▓▓▓░░▓░░▓▓░▓▓▓░░▓▓░▓ │
│ ^Aha ^Støre nevnt │
└──────────────────────────────────────────┘
```
## Åpne spørsmål
- Peaks per minutt: 800 er nok for de fleste visninger. Trenger vi flere nivåer (zoom)?
- Farger: Mono-farge eller fargekode per taler (krever diarisering)?
- Lagring: Inline i JSONB eller som separat `.json`-fil i media/?
## Innsats: LavMiddels
## Wow-faktor: Høy