Transkriberar du en massa ljud- eller videoinspelningar? Vill du hellre att AI gör jobbet åt dig? Vill du gärna vänta ett par timmar, upp till en arbetsdag på ett resultat? Då är Ragnar svaret! Ragnar är nämligen helt säker ur ett GDPR- och sekretessperspektiv. Ragnar bor nämligen bara i din dator eller på din server och pratar inte med någon på internet.
Jag och min kollega Björn Flintberg (på RISE) bygger just nu en prototyp på en transkriberingstjänst. Många behöver möjlighet till att få exempelvis forskarintervjuer och liknande transkriberade, men kan inte använda publika tjänster av olika anledningar. Idéen med Ragnar är en superenkel app som bara kan typ en sak och ingen ska kunna göra fel. Ragnar kan dessutom installeras på alla datorer och den enda skillnaden är att en nyare dator levererar resultat snabbare än en gammal.
Hur funkar Ragnar?
Det enda du behöver göra är att dra och släppa en ljud- eller videofil på Ragnar så transkriberar han. Du kan även välja om du vill ha en översättning på engelska. Resultatet du får är i form av olika filer som text, word, json och srt (undertextfil för film).
Du kan även spela in ljud direkt i Ragnar.
Tekniken bakom?
Ragnar är kodad i Python med Streamlit. För transkribering så används Whisper (från OpenAI) och Stable Whisper. Whisper är Open Source och laddas ned till din dator. Stable Whisper fixar tidsstämpling och liknande.
Din streamlit-app kan du som sagt var köra på din dator och om ditt nätverk tillåter så kan andra enheter inom ditt nätverk koppla upp sig mot din dator och använda appen. Som en lite miniserver. Du kan dessutom deploya streamlit-appar via Docker och liknande.
Enkel installation av Ragnar för Windows
Om du vill installera Ragnar, men inte känner dig helt säker på hur du gör, så kan du testa den här instruktionen som jag gjort där jag guidar dig steg för steg.
Innehåll i filmen
- Installera Python 3.11
- Ladda ned Ragnar från mickekring.se
- Packa upp Ragnar och flytta till C:
- Öppna kommandotolken och installera moduler till Python
- Köra igång Ragnar för första gången för att se att allt fungerar
- Skapa genväg till Ragnar som vi lägger på Skrivbordet
Tips och tricks
- Gör ett steg i taget och pausa i filmen
- Se till att du stavar allt rätt när du skriver in dina kommandon
- Det fungerar INTE att installera Python från Windows Store
- Om det inte fungerar med ’pip install -r requirements.txt’ kan du prova med
pip3.11 install -r requirements.txt - Om det inte fungerar med ’python -m streamlit run app.py’ kan du prova med
python3.11 -m streamlit run app.py
Ladda ned
>> Ladda ned Ragnar version 0.6.1
I filen du laddar ned har jag inkluderat FFMPEG för att du ska slippa det extra steget. I övrigt är den här versionen av Ragnar samma som du kan ladda ned från GitHub, men inte alltid den senaste versionen.
! Glöm inte att alltid scanna nedladdade filer från Internet för virus. Även de som kommer från mig.
Ladda ned och installera Ragnar på Mac, Linux och Windows
På github.com/mickekring/ragnar hittar du all kod samt instruktioner för att köra Ragnar. Håll koll, antingen här eller på GitHub för uppdateringar av appen. Här hittar du de senaste uppdateringarna.
Uppdateringar
- v0.6.1 | 09 apr 2024 – uppdatering som löser å, ä och ö på Windows
- v0.6.0 | 29 dec 2023
- v0.5.0 | 29 nov 2023
Bara ett ”heja!” rop från en entusiastisk kollega (musiker/musiklärare konstnär och gestaltterapeut.
Fast det är inte så ”bara”! Stort tack!:)
/Micke
Riktigt kul projekt 🙂 Vi testar detta just nu där vi kör det i en Docker Container. Galet krävande projekt. CPU ligger på 200% när den transkriberar.
Men det roliga är att den faktiskt börjar transkribera även på Stor, då med 9.5 GB resident minne utnyttjat:
top – 00:45:27 up 2:52, 11 users, load average: 2.04, 1.66, 1.10
Tasks: 157 total, 1 running, 156 sleeping, 0 stopped, 0 zombie
%Cpu(s): 83.5 us, 14.5 sy, 0.0 ni, 2.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 16008.7 total, 654.2 free, 15428.8 used, 181.4 buff/cache
MiB Swap: 4096.0 total, 3281.3 free, 814.7 used. 579.9 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
63203 100000 20 0 14.8g 9.5g 15628 S 195.0 60.6 13:18.20 streamlit
Det ska bli intressant att se om det är mer när man skickar på en större fil, eller om storleken på filen bara påverkar hur lång tid det tar. Vi se hur det går!
Ah, vad kul att ni testat! Ja, dessa AI-modeler suger musten ur all hårdvara. 🙂 Jag kör den t ex på min Macbook pro 2019 med endast CPU och då lyckas den transkribera med 3x hastighet, dvs 1 timmes material tar 3 timmar att transkribera och fläkten går på högvarv.
I den bästa av världar vill man snurra dessa på kraftfulla GPU:er, men tanken är att det ska funka på det mesta. Det handlar bara om hur länge man vill vänta.
Vad använde ni för hårdvara? Och vad får ni för hastigheter på transkribering?
Testat det på min HP Elitebook G8 (Windows då) och är imponerad. Väldigt bra resultat av transkriberingen men som andra sagt så är det väldigt CPU och minneskrävande. Jag hoppas detta är ett projekt som drivs vidare. Funderar på att sätta upp det på en server.
Kul att höra! Jepp, bara Whisper (AI-modeller från OpenAI som sköter transkriberingen) är ju på flera GB. Vi har ju kört detta på server, men med dedikerade GPU:er och då går det betydligt snabbare. Men tanker är att kunna göra transkribering helt lokalt på din egen dator. Du kan deploya Ragnar via Kubernetes eller Docker på server.
Tack för svar. Jag och min IT-kollegor har snabbt slängt upp det på en Windows server, mest för att labba och det verkar fungera hyfsat bra. Det är dock när flera användare är anslutna man börjar se lite problem, vid en eller två gånger har det kraschat och den verkar ha problem med att transkribera asiatiska språk (koreanska/thai), kanske för att den inte har teckentabellerna för det.
En grej jag hade älskat att se i det här projektet om du vill förbättra det för serveranvändning är ett kö-system och integration med e-post. T.ex. när man surfar till webbsidan så kan man ladda upp en fil och sedan stänga sidan/fliken när filen väl är mottagen, Ragnar jobbar kanske med 1-2 filer åt gången och resten hamnar i kö för att bearbetas en efter en. När jobbet är klart så stoppar den alla filerna (.txt/.srt etc) i en ZIP-fil och mailar till användaren. Surfar man in på sidan så ser man kön med pågående och väntande transkriberingar. Bara ett förslag. 🙂
Tack för tips! Ja, ett kö-system hade varit toppen. Dock vet jag inte om jag kommer vara den som utvecklar det, men sätter upp på önskelistan på GitHub. Den här prototypen är ju primärt till för våra forskare som behöver ett säkert sätt att lokalt transkribera sina intervjuer. Men något ska man ju ha att göra i jul 😉
Hej,
Lyckades installera detta på Windows och testade lite (jobbar med forskningsdatahantering och det finns ett enormt behov av säkra transkriberingsverktyg – så jag är mycket intresserad i det här projektet!). Intressant nog analyserade Ragnar min svenskspråkiga inspelning som nederländska och producerade en inte helt korrekt men läsbar nederländsk översättning. Min nederländska brytning är kanske starkare än jag trodde!
Haha, det kanske är så? 🙂
Men det kan vara värt att lägga till ”source language” då, där man kan välja vilket språk som talas? En dropdown-meny där ”Automatiskt” ligger som förvalt. Whisper brukar vara bra på att identifiera språk, men ibland har jag även fått Welsh istället för Engelska.
Hej,
Tack för bra instruktionsfilm, jag lyckades!
Men, transkribering till engelska får jag inte att fungera. Då säger den…
AttributeError: st.session_state has no attribute ”transcribed_en”. Did you forget to initialize it? More info: https://docs.streamlit.io/library/advanced-features/session-state#initialization
Traceback:
File ”C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\streamlit\runtime\scriptrunner\script_runner.py”, line 534, in _run_script
exec(code, module.__dict__)
File ”C:\ragnar\app.py”, line 467, in
main()
File ”C:\ragnar\app.py”, line 236, in main
document.add_paragraph(st.session_state.transcribed_en)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File ”C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\streamlit\runtime\state\session_state_proxy.py”, line 121, in __getattr__
raise AttributeError(_missing_attr_error_message(key))
Hej hej! Ja, jag har lyckats återskapa problemet. Det gäller endast när man ”spelar in” röst och inte när man laddar upp ljudfiler. Jag har det på min att-göra-lista nu. 🙂
Hej! Vilken bra grej! Jag är inte så bevandrad inom programmering men undrar om man måste ha Windows installerat på en Mac för att det ska fungera? Eller går det med macOS också?
Hej Malin!
Man behöver inte ha Win installerat på sin Mac, utan det fungerar på alla operativsystem. Det är bara att jag började med en manual för Windows, då flest använder Windows. Jag använder själv bara Mac, så det kommer nog en liten instruktion för oss Mac-användare också.
Tack, Micke! Jag fick hjälp av en vän och kan nu använda Ragnar på min Mac. 🙂 Och det fungerar utmärkt. Tack! 🙂
Vad kul att höra! Toppen!
En mer utförlig instruktion för installation på MAC tas tacksamt emot. Det skulle isf innebära att vi kan börja använda detta på prov inom medicinsk forskning och relaterad stödverksamhet.
Går detta att köra i Lockdown mode?
Hur bevisar vi att data inte läcker. Bara för att lösningen fungerar offline betyder inte att den inte läcker. Själva OpenAI-delarna alltså.
Det bästa
Hej hej! Det är en säkerhetsbedömning ni själva får göra. Men all kod är öppen och open source, så det är bara att gräva. 🙂 Och det skulle nog komma fram rätt snabbt med tanke på hur många miljoner som använder Whisper.
Hej Micke!
Tacksam för lite hjälp med installationen. Jag får inte upp min Lokala disk (OSDisk C:) dit jag dragit ragnar, utan det står U:\> i kommandotolken och jag kommer inte vidare därifrån.
Tack! 🙂
Hej igen Micke!
Jag löste problemet ovan 🙂 men har ett nytt nu när jag kom vidare:
så här står det i kommandotolken när jag skriver in din textremsa och även när jag skrivit i pip3.11 istället:
\ragnar>pip install -r requirements.txt
’pip’ is not recognized as an internal or external command,
operable program or batch file.
’pip3.11’ is not recognized as an internal or external command,
operable program or batch file.
Tacksam för hjälp!
//Lotta
Tack! åh vad jag hoppas detta funkar. har installerat och ska testa Ragnar. två frågor. jag får connection error – det står Is steamlit still running? If you accidentslly stopped Streamlit, just restart in your terminal: $,streamlit run yourscript.py
Jag har aldrig programmerat så här förut. Hur ska jag göra? och fråga två. När jag försöker spela in direkt så får jag stopptecken. Funkar det först när jag gjort indragning av ljudfil?
Tack för den här oerhört fina och lättanvända appen! Har testat den lokalt på en Windows 11-burk och även installerat den på min hemma-server som kör AlmaLinux, och det går som smort. (Den installationen är dock inte godkänd för sekretessbelagda data…)