Att göra en transkriptionsapp med tre klick att använda men mycket exakt låter svårt, men det är det inte. Låt oss introducera Whisper till AutoHotkey.
OpenAIs Whisper är en av de mest kraftfulla lösningarna för att förvandla din röst till text. Men Whisper kan också vara irriterande att använda, eftersom du måste skriva kommandon för att transkribera en ljudfil till text. Men varför göra det när vi har AutoHotkey?
Med AutoHotkey kan vi enkelt skapa ett grundläggande GUI för kommandoradsappar som Whisper. Så, låt oss göra det och se hur du kan skapa din egen transkriptionsapp genom att kombinera AutoHotkeys GUI-skapande superkrafter med OpenAIs Whisper som "hjärnan" bakom knapparna.
Att lägga grunden för Whisper och AutoHotkey
Du kan göra coola skript med AutoHotkey, men det är inte allt det kan göra. För det här projektet kommer vi att använda AutoHotkey för att skapa ett GUI för Whisper. Detta gör att vi kan använda OpenAIs AI-verktyg för röstigenkänning genom att klicka på knappar och anpassa dess funktionalitet med hjälp av menyer istället för att skriva kommandon.
Detta betyder dock att du måste ha både AutoHotkey och Whisper installerade för att följa med.
För den första delen av ekvationen kan du ladda ner AutoHotkey från dess officiella webbplats, kör sedan dess installationsprogram och följ de presenterade stegen.
Observera att vi kommer att använda den äldre versionen "v1" av skriptspråket, inte den nya v2. Det är viktigt eftersom de två versionerna använder en något annorlunda syntax. Det vi ser här kanske inte fungerar om du använder den nya v2.
Den andra delen är mer komplicerad, men du kan lära dig hur du gör det genom att läsa vår artikel om hur du förvandlar din röst till text med OpenAI: s Whisper för Windows.
Med båda installerade är vår handlingsplan som följer:
- Skapa ett GUI med element för Whispers variabler och värden.
- Skapa funktioner för att hämta värden från gränssnittet, välj filer och mappar och sätt ihop allt till ett användbart Whisper-kommando.
- Kör kommandot Whisper för att få resultat.
Naturligtvis kan du alltid använda Windows inbyggt stöd för röstinmatning, som vi såg i vår artikel om hur man startar röstinmatning i Windows 11. Fortfarande, som du kommer att se när du använder den, är Whisper mycket mer exakt (men också långsammare).
På ett mer personligt sätt borde jag förklara att jag inte är en programmerare, och det här projektet är en "remix" av en lösning gjord för personligt bruk.
Hur man gör ett nytt AutoHotkey-skript
Det första steget är att skapa en ny tom skriptfil. Behåll den i sin egen mapp, ifall du bestämmer dig för att finjustera eller bygga på den och skapa fler filer.
- Kör din favoritfilhanterare (eller tryck Windows-nyckel + E för att starta Windows Explorer) och skapa en mapp för din transkriptionsapp var du vill.
- Högerklicka på en tom plats i fönstret och välj Ny > AutoHotkey-skript för att skapa en tom skriptfil.
- Skift + Högerklicka på filen för att komma åt hela sammanhangsmenyn och välj att öppna den med din favoritkod eller textredigerare. Windows egna Anteckningsblock ska göra.
- Trots att det är "ett tomt skript" kommer din AHK-fil redan att vara förfylld med några "grejer". Det är användbara AutoHotkey-variabler och flaggor som definierar hur det ska fungera på ditt skrivbord. Ignorera dem, lämna dem som de är och gör alla dina framtida skrivningar under dem.
Lär känna Whispers flaggor
Eftersom vi gör ett GUI för en kommandoradsapp är det praktiskt att ha en referens till dess viktigaste variabler och flaggor som vi kommer att använda i vårt projekt. Du kan kolla in dem genom att läsa Whispers dokumentation, besöka dess officiella Github-sida, och kör den i din terminal.
Vi listar de vi kommer att använda i det här projektet för enkelhets skull. Vi föreslår att du lägger till dem i ditt skript som kommentarer (på separata rader, var och en börjar med ett ";"-tecken följt av ett mellanslag).
; Whisper Flags:; --initial_prompt PROMPT_TEXT; --output_format txt; -o OUTPUT_FOLDER; --modell MODEL_TO_USE; --uppgift TRANSCRIBE/TRANSLAATE; --språk EN/EL
Skapa GUI med AutoHotkey
Vi föreslår att du delar upp ditt skript i sektioner genom att använda kommentarer som vi gjorde för att hålla det organiserat. Vi börjar med att definiera några variabler, fortsätter till det faktiska GUI och avslutar med att definiera dess funktioner.
Vi börjar med ett avsnitt där vi kommer att definiera variabler som vi kanske vill ändra i framtiden, men inte så ofta att vi skulle vilja exponera dem genom GUI, vilket överkomplicerar det. Du kan skriva "Variabelnamn = Variabelns innehåll eller värde" med en variabel och ett värdepar per rad.
För detta projekt har vi definierat en Utmatningsformat variabel som vi sätter till "Text"värde och ett WhisperExecutable variabel angivande Whispers körbara filnamn. På detta sätt, om vi vill använda samma lösning i framtiden för att skapa SRT-undertextfiler istället för TXT-dokument eller uppgradera Viska/byt till en alternativ app, vi kan justera värdena för dessa variabler på den enstaka platsen istället för under hela manus.
OutputFormat = txtWhisperExecutable = viska
Ställa in användaralternativ
När du använder Whisper på kommandoraden låter tre av dess flaggor dig definiera:
- Om du gör det översättning eller transkription
- Ljudfilens språk
- Språket modell du vill använda (olika storlekar finns tillgängliga, var och en påverkar prestanda och resultatkvalitet).
Det enklaste sättet att erbjuda samma funktionalitet genom ett grafiskt användargränssnitt är genom beprövade rullgardinslistor. Syntaxen för att lägga till en rullgardinslista till ett AutoHotkey GUI är följande:
Gui, Lägg till, DropDownList, xPosition yPosition wBredd hHöjd vVariabel_som_kommer_håller_valt_värde, optionA|optionB|default_optionC||optionD|
Baserat på det, låt oss lägga till tre rullgardinslistor till vårt skript för att välja Whispers språk (mellan engelska/sv och grekiska/el), modell (liten, bas, liten, medium, stor) och uppgiftstyp (transkribera eller Översätt).
Gui, Add, DropDownList, x5 y5 w165 h50 vSelectedLanguage, en||el
Gui, Add, DropDownList, x175 y5 w165 h100 vSelectedModel, tiny|base|small||medium|large|
Gui, Add, DropDownList, x345 y5 w165 h100 vTaskType, transkribera||translate|
För att ställa in ett alternativ som standardval, använd en dubbelpipsymbol ("|") efter det. Du kan se att i vårt exempel har vi ställt in vårt språk till sv, Vald modell till småoch TaskType till transkribera.
Hur man guidar Whisper
Eftersom Whisper är AI-baserat, finns det inget sätt att ha absolut kontroll över hur Whisper transkriberar ljud. Det är fritt att välja vad det anser vara optimalt.
Men precis som andra AI-lösningar kan Whisper acceptera användaruppmaningar. Genom att skapa en prompt kan du "vägleda" hur den transkriberar ditt ljud.
Har lösningen vi gör misslyckats med att transkribera något korrekt? Du kan försöka "förklara" till Whisper "vad röstfilen handlar om", inklusive syntaxen för ord, akronymer och fraser i din prompt som du vill att de ska visas i transkriptionen. För det lägger vi till ett AutoHotkey-textredigeringsfält.
Syntaxen är inte alltför annorlunda än vad vi använde för att lägga till rullgardinslistor ovan:
Gui, Lägg till, Redigera, x5 w505 h400 vPromptText, %PromptText%
"%PromptText%" i slutet "berättar" till AHK att visa PromptText-variabelns innehåll (om den redan har tilldelats ett värde) i textfältet. Det kommer inte att visa något i skriptet vi gör, men betrakta det som en platshållare för när du så småningom justerar skriptet i framtiden också för att spara och ladda uppmaningar!
Föredrar du att tilldela ett fördefinierat värde till PromptText variabel? Lägg till något i stil med följande till Variabler avsnitt av manuset. Kom ihåg att ersätta "Ditt namn" med ditt faktiska namn.
PromptText = Transkription av ditt namns anteckningar
Ställa in åtgärdsknapparna
För att välja filer, mappar och köra Whisper efter att vi har ställt in allt, är det bättre att använda knappar. Du kan lägga till knappar till ett AHK-tillverkat gränssnitt med följande:
Gui, Add, Button, xPosition yPosition wWidth hHeight gFunction_To_Perform, Button Text
Observera att till skillnad från variabler i GUI-element, som börjar med bokstaven "v", börjar funktionsnamn med "g", för "Gå (till denna plats i skriptet)".
En enda knapp i ett AHK-gränssnitt kan också betraktas som "standard" som kommer att aktiveras om du inte klickar någonstans på GUI och trycker på Stiga på. Detta definieras genom att lägga till "standard" i avsnittet koordinater och funktion, som du märker i vår "OK"-knapp:
Gui, Add, Button, x5 w505 h50 gSelectFile, Ladda FileGui, Lägg till, Knapp, x5 w505 h50 gSelect Folder, VäljaProduktion Mapp
Gui, Lägg till, Knapp, Standard x5 w505 h50 gButtonSubmit, OK
Med ovanstående definierar vi tre knappar:
- En märkt "Ladda fil" som, när den klickas, kör Välj fil fungera.
- En märkt "Välj Utdatamapp", som kommer att köra Välj mapp fungera.
- En märkt "OK", vald som standard, "ringar" till ButtonSubmit fungera.
Hur du visar ditt GUI
Vårt GUI är klart men kommer inte att visas på vår skärm eftersom vi inte har "sagt" AutoHotkey att visa det eller vad varje knapp ska göra.
För det, lägg till följande två rader under de som definierar ditt GUI:
Gui, ShowReturn
Den första raden "berättar" till AHK att visa GUI: s fönster, medan den andra markerar avsnittets slut.
Funktionerna och funktionaliteten i vår app
Även om vi har slutfört avsnittet GUI, kommer det att krascha om du försöker köra skriptet. Det beror på att vi refererar till icke-existerande funktioner i den. Så vårt nästa steg är att skapa dessa funktioner.
De tre funktionerna vi vill ha är:
- Välj en indatafil.
- Välj utdatamappen där den transkriberade filen ska lagras.
- Skapa ett kommando som kommer att "sammanställa" alla variabler till ett användbart Whisper-kommando, liknande vad vi skulle skriva själva i en terminal, och sedan köra det.
Val av indatafil
Den första funktionen, som vi redan har döpt till "Välj fil" när vi lade till dess knapp i GUI, är:
Välj fil:FileSelectFile, SelectedFileReturn
FileSelectFile är en AutoHotkey-funktion som visar en typisk filbegärare, så att användaren kan välja en fil. Vald fil är variabeln i vårt skript som kommer att "hålla" sökvägen till filen som användaren valde.
Men som du ser i våra skärmdumpar har vi också lagt till följande rad precis ovanför den funktionsslutande "return":
MsgBox, %SelectedFile%
Detta kommer att få AHK att visa en Meddelandebox med den valda filen efter att vi valt den, vilket är användbart vid felsökning av ditt skript. Om den här meddelanderutan visar sökvägen och namnet till den valda filen, är det inte din filvalsknapp eller funktion som behöver fixas.
Val av utdatamapp
Funktionen för att välja en mapp är nästan identisk, med bara kommandots namn och variabel som ändras, för att visa att vi har att göra med mappar istället för filer:
SelectFolder: FileSelectFolder, SelectedFolderMsgBox, %SelectedFolder%Lämna tillbaka
Den sista funktionen
Den slutliga funktionen kommer att vara den mest komplicerade. Mappad till OK-knappen kommer detta att "samla" alla variabelvärden från GUI, omvandla dem till ett användbart kommando och sedan köra det.
Vi börjar med att ange funktionens början och slut:
ButtonSubmit:Lämna tillbaka
För att "gripa" alla GUI: s värden, lägg till följande under ButtonSubmit linje:
Gui Submit, nohide
Följande rad skapar en ny variabel som heter "WhisperFlags". Den lägger sedan till alla GUI: s variabler som flaggor för kommandot Whisper.
WhisperFlags = --initial_prompt "%PromptText%" --task %TaskType% --modell %SelectedModel% --språk %SelectedLanguage% --output_format %OutputFormat% -o "%Selected Folder%""%SelectedFile%"
Därefter kommer vi att "berätta" för AHK att använda standardterminalen (CMD.exe) för att köra Whispers körbara fil (som vi definierade med WhisperExecutable variabel) med GUI: s variabler (som nu är "sammansatta" i singeln WhisperFlags variabel).
RunWait, cmd.exe /c %WhisperExecutable% %WhisperFlags%
För ännu enklare felsökning har vi också lagt till en msgbox, som tidigare, men även lagt till följande rad:
Urklipp = %WhisperExecutable% %WhisperFlags%
Detta kommer att kopieras till Urklipp det fullständiga kommandot som utfärdats till CMD. Så om något misslyckas, istället för att bara se kommandot i en av AHK: s meddelanderutor, har du det också tillgängligt i ditt Urklipp.
Öppna en terminal, klistra in kommandot från Urklipp och kontrollera felen som dyker upp för att lokalisera potentiella problem.
Till exempel, när jag arbetade med manuset, glömde jag först att ha uppmaningen inom citattecken. Således misslyckades kommandot, eftersom Whisper försökte analysera prompten som flaggor.
Testning och sista justeringar
Det var det – vi har precis skapat en transkriptionsapp med hjälp av AutoHotkeys GUI-skapande funktioner och en färdig att använda AI-transkriptionslösning.
Prova att köra ditt skript (dubbelklicka på dess fil), och du bör se ditt GUI på skärmen.
- Ändra Whispers inställningar med hjälp av listorna längst upp.
- Skriv en kort beskrivning av din transkription (och några termer) i Prompt fält.
- Klicka på Ladda fil och välj den ljudfil du vill transkribera.
- Klicka på Välj Utdatamapp knappen och välj var den producerade textfilen ska lagras.
- Klicka på OK för att släppa loss Whisper, som konfigurerats av ditt GUI, på din valda ljudfil, och spara dess transkription som en textfil i den mapp du valde.
Om allt fungerade, gå tillbaka till ditt skript och antingen ta bort eller kommentera (genom att lägga till ett ";" i början) alla felsökningsfunktioner (meddelanderutor och kopiera-till-urklippsrader).
Tar Viska vidare med AutoHotkey
Genom att korrekt ställa in standardvärdena för ditt GUI och kanske lägga till en generisk prompt kan du förvandla Whisper till en tre klick för att transkribera lösning: Ingen betalning för kommersiella lösningar, tredjepartstjänster, krånglande med komplicerade gränssnitt eller att skriva i en terminal.