Sånn lagde VG-utviklerne JOJO med OpenAI-løsning

- Den største utfordringen var hvordan vi skulle behandle sensitive filer.

Ifølge Edvard Høiby er appen laget for å være så sikker som mulig og kan kjøre uten internett.📸: Privat
Ifølge Edvard Høiby er appen laget for å være så sikker som mulig og kan kjøre uten internett.📸: Privat Vis mer

- Den største utfordringen med utviklingen av JOJO er nok å finne ut hvordan vi skulle behandle sensitive filer, sier Edvard Høiby, frontendutvikler i VG, til kode24.

18-årige Høiby har vært med å utvikle JOJO, som er et felles navn på to produkter som transkriberer lyd til tekst med OpenAIs Whisper-modell.

Det første produktet er en Mac-app, og den andre er web-basert åpen kildekode-løsning.

Repoet kalles WAAS; Whisper as a Service.

Tester Whisper

Hele prosjektet startet med at VG-utvikleren Johannes Andersen så at OpenAI hadde delt en bloggpost på Twitter hvor de introduserte Whisper. Og under en lunsj med noen journalister fra podkast-avdelingen, kom det fram hvor mye arbeid som lå i å transkribere intervjuer.

Under en idemyldre-workshop hvor temaet var AI, kom Andersen med ideen om å lage et API som brukte Whisper til å transkribere. Mange var interesserte i å bli med på prosjektet, forteller Høiby.

Et team bestående av Johannes Andersen, Johannes Gorset, Einar Otto Stangvik og Gabriel Jensen Cavallaro utvikla et fungerende API på to dager.

- Men det var fortsatt en del jobb igjen. En av tingene som manglet var et køsystem. API-et ble laget i Python med rammeverket Flask. Det var en tanke om at koden kunne være til hjelp for andre utenfor Schibsted også, derfor valgte teamet å open source løsningen, sier Høiby.

Edvard Høiby er frontendutvikler i VG. 📸: Privat
Edvard Høiby er frontendutvikler i VG. 📸: Privat Vis mer

Lagde Mac-app

Ifølge Høiby jobbet teamet i sprinter, som de kaller for "missions". Et "mission" er tre uker langt.

- Da vi fikk konstatert at Whisper var av bra nok kvalitet, og at det kom til å spare mye tid, fikk vi en mission-periode å jobbe videre med prosjektet, sier han.

Høiby ble en del av teamet, som startet å se på hvordan de kunne utvikle et bra køsystem og hvordan serverne burde kjøres.

- Under disse diskusjonene ble det også tatt opp hvordan vi skulle behandle sensitive filer, altså typiske filer som man ikke skal laste opp til noen skylagring. Noen på teamet nevnte at vi kunne lage noe hvor alt skjer lokalt på maskinen, alle syntes det var en god ide, sier Høiby.

Her transkriberer appen et lydopptak. 📸: Skjermdump
Her transkriberer appen et lydopptak. 📸: Skjermdump Vis mer

Skal være så sikker som mulig

Teamet fikk en iOS-utvikler til å lage Mac-appen. Den er laget i Swift og bygget på toppen av whisper.cpp.

- Den har mye funksjonalitet, som redigeringsfunksjoner av teksten, eksport av undertekster og avspilling av lyd. Appen kjører lokalt på maskinen din og ingenting blir sendt opp til skyen, forteller Høiby.

Ifølge ham er appen laget for å være så sikker som mulig og kan kjøre uten internett.

- Den er ikke open sourced per nå, men er gratis å laste ned på AppStore. Web-versjonen kjører på en AWS-server med NVIDIA Tesla T4, sier Høiby.

Her ligger den ferdig transkriberte lydfila på tilnærmet god norsk (dog litt problemer med mumlete stavangerdialekt). 📸: Skjermdump
Her ligger den ferdig transkriberte lydfila på tilnærmet god norsk (dog litt problemer med mumlete stavangerdialekt). 📸: Skjermdump Vis mer

Utfordrende sensitive filer

Frontenden i webversjonen er bygget med Preact. Webversjonen har også noen redigeringsfunksjoner - om enn ikke like avanserte som appen.

- Den kan eksportere undertekster, og du trenger ikke å ha den oppe etter at du har startet transkriberingen. Når den er ferdig får du en mail, sier Høiby.

Backenden på webversjonen er bygd med Python og bruker Flask som rammeverk. Høiby forteller at i tillegg til håndtering av sensitive data, var en utfordring om hvordan de kunne trene appen selv.

- Det er noe vi fortsatt ikke har gjort noe med. Videre så har vi tenkt til å jobbe med å sette opp Docker builds, "versions" på repoet og se på hvordan vi kan autoskalere over flere servere, sier han.