CI Subtitles

Et lokalt verktøy som gjør opptak om til kontrollerte norske undertekster med ordtiming – med Whisper, FastAPI og Next.js.

Type
Verktøy
Periode
2026
Min rolle
Design og utvikling
Status
I bruk i egen videoproduksjon
Teknologi
Gjennomgangsvisningen i CI Subtitles: videoen øverst, linjene med tidskoder under og ordtimingen for den valgte linjen til høyre, med et forslag om å skrive «lite hint» som ett ord.

CI Subtitles er et lokalt verktøy for automatisk teksting på norsk, med et eget arbeidssteg for menneskelig kontroll. Jeg har bygget det for videoproduksjonen i Mikael’s Norwegian Lessons, fra første transkripsjon til ferdige undertekster og tidsdata for videre redigering.

Verktøyet kombinerer talegjenkjenning med et grensesnitt for å lytte, rette og kontrollere. Den ferdige teksten bygger på det jeg har gjennomgått, mens systemet beregner når ordene forekommer i opptaket.

Utfordringen: gode undertekster trenger mer enn talegjenkjenning

Et automatisk tekstutkast kan være nyttig selv om det inneholder feil. Utfordringen er å finne feilene og rette dem uten å miste oversikten over opptaket.

Et navn kan få flere skrivemåter. En gjentakelse kan falle bort. Et uvanlig ord kan være riktig selv om det ikke finnes i ordlisten. I en undervisningsvideo er det viktig å kontrollere hva som faktisk ble sagt, fremfor å la et system skrive om setningen til noe som virker mer sannsynlig.

Tekst og tidspunkt er dessuten to forskjellige oppgaver. Når teksten blir rettet, må ordene fortsatt kunne plasseres i lyden. Jeg trengte derfor en arbeidsflyt der gjennomgang, korrigering og timing henger sammen.

Løsningen: CI Subtitles fra opptak til kontrollert eksport

Lokal transkripsjon med Whisper

Arbeidet starter med et prosjekt og en video- eller lydfil. Talegjenkjenningen kjører lokalt, og resultatet blir et første tekstutkast som kan gjennomgås sammen med opptaket.

Løsningen støtter Whisper-baserte modeller gjennom lokale kjøremotorer, blant annet faster-whisper. Jeg har lagt opp arbeidsflyten rundt norske opptak med tydelig tale og undertekster på bokmål.

Råresultatet beholdes. Det gjør det mulig å skille det modellen opprinnelig foreslo fra endringene som er gjort under gjennomgangen. Teksten skal kunne vurderes og korrigeres med opptaket som fasit.

Varsler som hjelper meg å velge hva jeg skal sjekke

Etter transkripsjonen undersøker verktøyet teksten og markerer steder som kan trenge oppmerksomhet. Det kan være ukjente ord, ulike skrivemåter eller usikre gjenkjenninger.

En markering er en kandidat for kontroll. Den er ikke en beslutning om at ordet er feil. Dette er en viktig forskjell når et opptak inneholder navn, faguttrykk eller andre ord en generell ordliste ikke dekker.

Grensesnittet lar meg hoppe til et ord, spille av en linje og lytte til samme del flere ganger. Tastatursnarveier gjør det mulig å bevege seg mellom linjer og markeringer under gjennomgangen.

Retting med sammenheng og historikk

Tekstredigeringen skjer ved siden av videoen. Jeg kan kontrollere en linje mot lyden, rette ord og markere hva som er gjennomgått.

Verktøyet samler også mulige varianter av samme begrep. Før en felles retting brukes, kan jeg se forekomstene og velge hvilke som faktisk hører sammen. Et ord som ligner på et navn, skal ikke automatisk endres i alle sammenhenger.

En alternativ transkripsjon kan brukes som en ekstra vurdering. Forskjeller vises som forslag jeg kan ta stilling til. Endringer skal ikke snike seg inn i den gjennomgåtte teksten uten en handling fra meg.

Ordtiming etter at teksten er korrigert

Når teksten er riktig, tilpasses den til den opprinnelige lyden på nytt. Dette kalles tvungen justering: systemet bruker den korrigerte teksten til å finne tidspunktet for hvert ord.

Det skiller to typer arbeid som lett blandes sammen. Jeg bestemmer hva som ble sagt. Systemet hjelper med å finne når det ble sagt. Ved behov kan jeg også justere ordgrenser manuelt, og slike justeringer bevares ved senere automatisk behandling.

Ordtimingen gjør det mulig å bruke materialet videre i visninger der enkeltord skal følge talen. Den ferdige informasjonen kan derfor brukes til mer enn vanlige tekstlinjer nederst i en video.

Eksport til resten av produksjonen

Jeg eksporterer undertekstene som SRT for bruk i videoredigering og publisering. Verktøyet kan også eksportere ren tekst, WebVTT og JSON med opplysninger om ordene og tidspunktene.

SRT er dermed en leveranse fra systemet, fremfor hele datamodellen. Grunnlaget er den kontrollerte teksten og ordtimingen. Det gir rom for flere eksportformater uten å gjøre om gjennomgangen fra starten.

Under panseret

Backend er bygget i Python med FastAPI. Den håndterer prosjekter, lydbehandling, transkripsjon, kontroll og eksport. SQLite lagrer prosjektdata, mens tilhørende mediefiler og resultater ligger lokalt.

Grensesnittet er bygget med Next.js, React og TypeScript. Det gir meg et webgrensesnitt for en lokal arbeidsstasjon, med video, tekst og handlinger samlet i samme arbeidsflate.

Arbeidsflyten har en tydelig rekkefølge:

  1. Legg til et opptak og eventuelle kjente begreper.
  2. Kjør lokal transkripsjon og automatiske kontroller.
  3. Lytt, rett teksten og gjennomgå markeringene.
  4. Beregn ordtiming ut fra den korrigerte teksten.
  5. Kontroller resultatet og eksporter til videre produksjon.

Langvarig behandling kjøres som bakgrunnsjobber. Gjennomgangsvisningen kan dermed arbeide med prosjektets tilstand mens systemet håndterer oppgaver som tar tid.

Den vanlige transkripsjonsflyten behandler mediene lokalt. Valgfri assistanse gjennom en ekstern API-tjeneste er et separat valg som er avslått som standard. Det valget må holdes tydelig adskilt fra den lokale behandlingen.

Resultat i egen videoproduksjon

CI Subtitles brukes i arbeidet med mine egne videoer. Resultatet er en samlet arbeidsflyt for å gjøre opptak om til kontrollerte undertekster, med timing som kan tas videre til DaVinci Resolve og publisering.

Prosjektet har gitt meg et praktisk grunnlag for å utvikle rundt talegjenkjenning. Modellens svar må få en tydelig plass i arbeidsflyten, og brukeren trenger gode verktøy for å vurdere og rette det.

Det sentrale resultatet er kombinasjonen av automatisk behandling og en konkret kontrolloppgave. Gjennomgangen er en del av produktet, og endringer kan følges tilbake til arbeidet som er gjort med teksten.

Kontrollerte undertekster gjør også videoene tilgjengelige for flere, blant annet for seere som ikke kan høre lyden. Det er en del av det jeg ser på i en gjennomgang av universell utforming.

Relevant for dere hvis …

Dere har en gjentakende arbeidsoppgave med filer, flere behandlingstrinn og en sluttkontroll. CI Subtitles viser hvordan jeg samler disse delene i et verktøy bygget rundt oppgaven som faktisk skal gjøres.

Jeg utvikler webapplikasjoner og interne verktøy for slike behov. Fortell hvordan dere løser oppgaven i dag, så er det mulig å finne et konkret første steg.