Hur man gör din egen Windows-transkriptionsapp med Whisper och AutoHotkey

By rik

Skapa ett eget transkriptionsverktyg för Windows med Whisper och AutoHotkey

OpenAI:s Whisper är ett kraftfullt verktyg för att omvandla tal till text. Dessvärre kan det vara besvärligt att använda direkt, eftersom det kräver kommandoradsinmatning för att transkribera ljudfiler. Men med AutoHotkey kan vi förenkla processen.

Genom att använda AutoHotkey kan vi snabbt skapa ett enkelt grafiskt gränssnitt (GUI) för kommandoradsapplikationer som Whisper. Låt oss utforska hur vi kan bygga vår egen transkriptionsapp, genom att kombinera AutoHotkeys GUI-skapande förmåga med OpenAIs Whisper som ”motorn” bakom knapparna.

Grunden för Whisper och AutoHotkey

AutoHotkey är kapabelt att skapa imponerande skript, men vi ska fokusera på dess förmåga att generera GUI:n för Whisper. Detta gör att vi kan använda OpenAIs röstigenkänningsverktyg genom att klicka på knappar och anpassa funktioner via menyer, istället för att använda kommandoraden.

För att följa denna guide behöver du både AutoHotkey och Whisper installerade.

Du kan ladda ner AutoHotkey från den officiella webbplatsen. Följ installationsstegen och notera att vi kommer att använda den äldre versionen (v1) av skriptspråket, inte v2. Dessa versioner har något olika syntax, och koden vi presenterar här kan inte fungera med v2.

Installationen av Whisper är mer komplex, men du kan följa vår guide om hur du förvandlar tal till text med OpenAI:s Whisper för Windows.

Med båda verktygen installerade är vår plan:

  1. Skapa ett GUI med element för Whispers variabler och värden.
  2. Skapa funktioner för att samla in data från gränssnittet, välja filer och mappar, och sätta ihop allt till ett användbart Whisper-kommando.
  3. Kör Whisper-kommandot för att få resultatet.

Även om Windows har inbyggt stöd för röstinmatning, som vi har sett i vår artikel om röstinmatning i Windows 11, är Whisper oftast mycket mer exakt (men långsammare).

Jag vill också påpeka att jag inte är en professionell programmerare. Det här projektet är en bearbetning av en lösning jag skapat för personligt bruk.

Hur du skapar ett nytt AutoHotkey-skript

Börja med att skapa en ny, tom skriptfil och lägg den i en egen mapp om du vill utöka den senare.

  1. Starta din favorit filhanterare (Windows Key + E för Utforskaren) och skapa en mapp för din transkriptionsapp.
  2. Högerklicka i mappen och välj Nytt > AutoHotkey Script.
  3. Skift + Högerklicka på filen och öppna den med din valda textredigerare. Anteckningar fungerar bra.
  4. Även om filen är ”tom”, innehåller den några rader med AutoHotkey-variabler och flaggor. Lämna dem och skriv all din kod under dem.

Whispers flaggor

När vi skapar ett GUI för en kommandoradsapp är det bra att ha en lista över de viktigaste variablerna och flaggorna som vi ska använda. Du hittar dessa i Whispers dokumentation och på dess Github-sida. Du kan också visa dem i terminalen.

Vi listar de som används i det här projektet för att göra det enklare. Lägg till dem i skriptet som kommentarer (på separata rader, börja med ett semikolon ”;”).

 ; Whisper Flags:;  

Skapa GUI med AutoHotkey

Vi rekommenderar att du delar upp skriptet med hjälp av kommentarer för att hålla det organiserat. Vi börjar med variabler, sedan GUI, och slutligen funktionerna.

Dolda variabler

Här definierar vi variabler som vi inte vill ändra så ofta och som därför inte behöver synas i GUI:t. Du kan skriva ”Variabelnamn = Variabelns innehåll eller värde”, en variabel och ett värde per rad.

Vi definierar variablerna `OutputFormat` (som vi sätter till ”txt”) och `WhisperExecutable` (som anger namnet på Whispers körbara fil). Om vi vill använda samma lösning för SRT-filer eller uppgradera Whisper, kan vi ändra dessa värden på ett ställe.

 OutputFormat = txtWhisperExecutable = whisper 

Användaralternativ

Med Whisper på kommandoraden kan du definiera följande med tre flaggor:

  • Om du vill göra en översättning eller transkription.
  • Ljudfilens språk.
  • Vilken språkmodell som ska användas (olika storlekar, påverkar prestanda och kvalitet).

Det enklaste sättet att återskapa detta i GUI är med rullgardinsmenyer. Syntaxen för att lägga till en rullgardinsmeny i AutoHotkey är:

 Gui, Add, DropDownList, xPosition yPosition wWidth hHeight vVariabel_som_sparar_valda_vardet, alternativA|alternativB|standard_alternativC||alternativD| 

Vi lägger till tre rullgardinsmenyer: språk (engelska/en, svenska/sv och grekiska/el), modell (tiny, base, small, medium, large) och uppgiftstyp (transkribera eller översätt).

 Gui, Add, DropDownList, x5 y5 w165 h50 vSelectedLanguage, en||sv|el
Gui, Add, DropDownList, x175 y5 w165 h100 vSelectedModel, tiny|base|small||medium|large|
Gui, Add, DropDownList, x345 y5 w165 h100 vTaskType, transcribe||translate|

Använd en dubbel pipe-symbol (”||”) efter det alternativ som ska vara standard. I exemplet är språket inställt på ”en”, modellen på ”small” och uppgiften på ”transcribe”.

Hur du vägleder Whisper

Eftersom Whisper är AI-baserat kan du inte helt kontrollera hur det transkriberar ljudet. Det är fritt att välja vad det anser vara optimalt. Men du kan använda ”prompts” för att vägleda hur transkriptionen sker.

Om Whisper misslyckas med att transkribera något korrekt, kan du ”förklara” vad ljudfilen handlar om, med den syntax, de akronymer och fraser du vill se i transkriptionen. För detta lägger vi till ett textfält.

Syntaxen liknar den för rullgardinsmenyerna:

 Gui, Add, Edit, x5 w505 h400 vPromptText, %PromptText% 

”%PromptText%” säger till AHK att visa PromptText-variabelns innehåll (om den har ett värde). Det visas inget i skriptet just nu, men det fungerar som platshållare för när du kanske vill spara och ladda prompts!

Vill du tilldela ett fördefinierat värde till variabeln PromptText? Lägg till något i stil med detta i variabelavsnittet:

 PromptText = Transkription av Ditt Namns anteckningar 

Åtgärdsknappar

För att välja filer, mappar och köra Whisper efter att allt är inställt, är det bra att använda knappar. Du kan lägga till knappar med:

 Gui, Add, Button, xPosition yPosition wWidth hHeight gFunktion_som_ska_utföras, Knapptext 

Till skillnad från GUI-elementvariabler som börjar med ”v”, börjar funktionsnamn med ”g” (för ”Gå till denna plats i skriptet”).

En knapp i ett AHK-GUI kan definieras som ”standard” och aktiveras om du trycker på Enter. Detta görs genom att lägga till ”default” i koordinat- och funktionsavsnittet, som i vår ”OK”-knapp:

 Gui, Add, Button, x5 w505 h50 gSelectFile, Ladda fil
Gui, Add, Button, x5 w505 h50 gSelectFolder, Välj utmapp
Gui, Add, Button, Default x5 w505 h50 gButtonSubmit, OK

Vi definierar tre knappar:

  • ”Ladda fil” som kör funktionen SelectFile när den klickas.
  • ”Välj utmapp” som kör funktionen SelectFolder.
  • ”OK” (standardknappen) som anropar funktionen ButtonSubmit.

Hur du visar GUI

GUI:t är klart, men visas inte eftersom vi inte har ”sagt” till AutoHotkey att visa det eller vad varje knapp ska göra.

Lägg till dessa två rader efter de som definierar GUI:

 Gui, ShowReturn 

Den första raden instruerar AHK att visa GUI:t och den andra markerar slutet på sektionen.

Funktionerna i vår app

Även om GUI-sektionen är klar, kraschar skriptet om du försöker köra det nu eftersom vi hänvisar till funktioner som inte finns. Nästa steg är att skapa dessa funktioner.

Vi behöver tre funktioner:

  • Välja en indatafil.
  • Välja utdatamappen för den transkriberade filen.
  • Skapa ett kommando som kombinerar alla variabler till ett användbart Whisper-kommando och sedan kör det.

Val av indatafil

Den första funktionen, som vi kallar ”SelectFile”, ser ut så här:

 SelectFile:FileSelectFile, SelectedFileReturn 

FileSelectFile är en AHK-funktion som visar en standard filväljare. SelectedFile är variabeln som sparar sökvägen till den valda filen.

Vi har även lagt till följande rad precis innan ”return”:

 MsgBox, %SelectedFile% 

Detta visar en meddelanderuta med den valda filen. Det är bra för felsökning: Om rutan visar rätt fil, är det inte filvalsknappen eller funktionen som behöver fixas.

Val av utdatamapp

Funktionen för att välja en mapp är liknande, men med andra kommandon och variabler för att visa att vi hanterar mappar i stället för filer:

 SelectFolder:FileSelectFolder, SelectedFolderMsgBox, %SelectedFolder%Return 

Den sista funktionen

Den sista funktionen är den mest komplicerade. Den är kopplad till ”OK”-knappen, hämtar alla värden från GUI, omvandlar dem till ett användbart kommando och kör det.

Vi börjar med att ange funktionens början och slut:

 ButtonSubmit:Return 

För att hämta alla värden från GUI lägger vi till:

 Gui Submit, nohide 

Följande rad skapar en ny variabel, ”WhisperFlags”, och lägger till GUI-variablerna som flaggor för Whisper:

 WhisperFlags = --initial_prompt "%PromptText%" --task %TaskType% --model %SelectedModel% --language %SelectedLanguage% --output_format %OutputFormat% -o "%SelectedFolder%" "%SelectedFile%" 

Sedan instruerar vi AHK att använda standardterminalen (CMD.exe) för att köra Whispers körbara fil (definierad av variabeln WhisperExecutable) med GUI-variablerna (i ”WhisperFlags”):

 RunWait, cmd.exe /c %WhisperExecutable% %WhisperFlags% 

För felsökning lägger vi till en msgbox, men också följande rad:

 Clipboard = %WhisperExecutable% %WhisperFlags% 

Detta kopierar hela kommandot till Urklipp. Om något går fel kan du enkelt se det i Urklipp.

Öppna terminalen, klistra in kommandot och kontrollera felen.

Exempelvis glömde jag först att sätta prompten inom citattecken, vilket resulterade i att Whisper försökte tolka den som flaggor.

Testning och sista justeringar

Det var allt! Vi har skapat en transkriptionsapp med hjälp av AutoHotkeys GUI-funktioner och en färdig AI-transkriptionslösning.

Prova att köra skriptet och du ska se GUI:t på skärmen.

  • Ändra Whispers inställningar med rullgardinsmenyerna.
  • Skriv en kort beskrivning av transkriptionen (och eventuella termer) i promptfältet.
  • Klicka på ”Ladda fil” och välj ljudfilen.
  • Klicka på ”Välj utmapp” och välj var textfilen ska sparas.
  • Klicka på ”OK” för att köra Whisper.

Om allt fungerar, gå tillbaka till skriptet och ta bort eller kommentera ut alla felsökningsfunktioner (meddelanderutor och kopiera-till-urklippsrader).

Utöka Whispers funktioner med AutoHotkey

Genom att konfigurera standardvärden i GUI:t och lägga till en generell prompt kan du göra Whisper till en transkriptionslösning med tre klick. Du behöver inte betala för kommersiella lösningar, använda tredjepartstjänster, krångla med komplicerade gränssnitt eller använda kommandoterminalen.