Studenten Mikkel lar AI høre podcaster, så du slipper

- Generativ AI føltes som magi, sier NTNU-studenten Mikkel Svartveit om Snipcast, som oppsummerer podcast-episoder for deg.

Mikkel Svartveit er utvekslingsstudent ved UC Berkeley i California, og liker å kode på fritiden. 📸: Privat
Mikkel Svartveit er utvekslingsstudent ved UC Berkeley i California, og liker å kode på fritiden. 📸: Privat Vis mer

– Jeg bruker Snipcast selv for å finne ut om dette er en episode jeg har lyst til å høre på, sier Mikkel Svartveit.

Han har laget en tjeneste – Snipcast – som lar deg lime inn URL-en til en podcast og minutter senere få et skriftlig sammendrag av podcasten tilsendt på e-post.

Svartveit studerer datateknologi på NTNU på 4. året, og er for tiden utvekslingsstudent på UC Berkeley utenfor San Francisco.

Ville lage noe kult med AI

– Hvordan kom du på denne idéen?

– De siste månedene har jeg tenkt på om jeg kan lage noe kult med OpenAI-modellene. De åpner for så mye muligheter, sier Svartveit.

Han forteller at han ofte hører på podcaster. Men av og til hender det han hører noe han vil huske til senere, men så er det ikke alltid mulighet der og da til å notere ned.

Snipcast er enkel å bruke: Lim inn URL-en til podcasten, tast inn e-postadressen din og trykk "Generate summary". Noen minutter senere ligger en oppsummering av podcasten i innboksen.
Snipcast er enkel å bruke: Lim inn URL-en til podcasten, tast inn e-postadressen din og trykk "Generate summary". Noen minutter senere ligger en oppsummering av podcasten i innboksen. Vis mer

Etter hvert begynte han å kode på hobbyprosjektet Snipcast. Målet var å lage en tjeneste som både kunne hjelpe til med å finne ut hvilke podcaster han skulle høre på, og til å oppsummere podcaster han allerede hadde hørt.

– Jeg begynte i april/mai en gang, og holdt på litt i sommer. Det var et sideprosjekt, og litt prokrastinering i eksamensperioden. Jeg brukte ofte togturene mellom Moss og Oslo til å jobbe litt på det, forteller Svartveit.

OpenAI, Python og SvelteKit

Snipcast skal fungere med alle podcaster. Du kopierer URL-en til podcasten fra for eksempel Spotify eller Apple Podcasts inn i et felt på Snipcast.io-nettsiden, legger inn e-postadressen din og trykker "Generate summary".

Å lage en oppsummering av en typisk podcast på én time tar rundt tre minutter.

For å bygge tjenesten baserer Svartveit seg på OpenAIs Whisper-tjeneste som kan gjøre om tale til tekst. Denne hoster han selv i en Python-mikrotjeneste som kjører i Google Cloud.

– Whisper er open source, det ligger på GitHub. Jeg spant opp et dockerimage med et Python-bibliotek i Google Cloud Run. Så pøser jeg på med så mye prosessorkraft jeg kan.

Når tale er gjort om til tekst, blir teksten sendt til ChatGPT, som lager en kortfattet oppsummering.

– Selve nettsiden er laget med SvelteKit og hostet i Cloudflare. Jeg har blitt mer og mer glad i Svelte, det er raskt og behagelig og føles som en forlengelse av HTML og JavaScript.

For å style nettsidene brukes Tailwind CSS. Det mener Svartveit gjør at det går mye raskere å skrive CSS, og han liker også at det er få begrensninger – og at man ikke blir "låst inn" slik du kan bli med en del rammeverk.

«Så pøser jeg på med så mye prosessorkraft jeg kan.»

Foreløpig kun på engelsk

– Tjenesten fungerer foreløpig kun på engelsk og ikke på norsk. Hvorfor det?

– Whisper-modellen har fire ulike nivåer. Den minste modellen jeg bruker fungerer ikke på norsk. Jeg prøvde, og den spyttet bare ut helt random ord. Da begynte ChatGPT å hallusinere og dikte opp sin egen podcast! sier Svartveit.

De fire nivåene i OpenAI Whisper er "tiny", "small", "medium" og "large", der det er tiny-modellen som brukes i Snipcast. Jo større modell, jo mer nøyaktig blir teksten – men samtidig krever det mer datakraft. Det betyr at det ikke bare kan ta lenger tid, det er også dyrere.

– Jeg får regning fra både Google Cloud og OpenAI. Men siden jeg valgte å hoste Whisper-modellen selv blir det billigere enn å bruke API-et til OpenAI.

Svartveit sier han kunne brukt API-et som kjører den beste modellen og er rask, og på den måten fått til støtte for flere språk.

– Men det er mye dyrere.

Totalt anslår Svartveit at han i dag betaler rundt 1 krone per time podcast som prosesseres.

– Jeg tar regningen selv nå, så får vi se om det etter hvert blir aktuelt med en abonnementsløsning.

Prompt engineering tar tid

– Hva har vært det vanskeligste med å bygge Snipcast?

– Prompt engineering har tatt overraskende lang tid. Det å komme opp med prompts som fungerer konsistent og bra hver gang.

Noe av det som har vært vanskelig har vært få AI-en til å skjønne at noen har sendt inn en podcast med "feil" språk. For hvis Whisper ikke forstår språket vil den kunne sende en masse feil ord til ChatGPT, som hvis den ikke forstår bare begynner å dikte opp ett eller annet.

– Nå har jeg laget en prompt som gjør at den bare sier "jeg skjønner ikke", hvis den ikke forstår.

«Du kan lage ganske komplekse ting som utvikler, uten at du trenger å skrive så mye kode selv.»

Kan lage mye med generativ AI

Planene videre nå er å jobbe mer med landingssiden til Snipcast og få opp noen flere eksempler. Blir tjenesten populær må han kanskje i tillegg få på plass en abonnementsløsning for å slippe å betale alle kostnadene selv.

Svartveit sier han er imponert over hvordan generativ AI har gjort det mulig å få til mye som for ikke for lenge siden var temmelig vanskelig å få til.

– Jeg synes det er veldig kult, og utviklingen går så fort. Mitt første møte med generativ AI var for ett og et halvt år siden, og da føltes det som magi. Nå er det noe jeg nesten tar for gitt er der og hjelper meg.

– Det gjør at du kan lage ganske komplekse ting som utvikler, uten at du trenger å skrive så mye kode selv, avslutter han.