Lag din egen transkripsjonsapp med AutoHotkey og Whisper
OpenAIs Whisper er et kraftig verktøy for å konvertere tale til tekst. Det kan imidlertid være litt tungvint å bruke, da det krever kommandoer for å transkribere lydfiler. Men hva om det fantes en enklere måte? AutoHotkey gir oss muligheten til å lage et brukervennlig grensesnitt (GUI) for kommandolinjeverktøy som Whisper. La oss se hvordan du kan bygge din egen transkripsjonsapp ved å kombinere AutoHotkeys GUI-funksjoner med OpenAIs Whisper som «hjernen» bak det hele.
Forberedelser for Whisper og AutoHotkey
AutoHotkey er ikke bare for enkle skript, det kan også brukes til å lage avanserte GUI-er. I dette prosjektet skal vi bruke det til å bygge et GUI for Whisper. Dette lar oss benytte OpenAIs tale-til-tekst AI med knapper og menyer i stedet for kommandoer. For å følge denne veiledningen, må du ha både AutoHotkey og Whisper installert.
AutoHotkey kan lastes ned fra den offisielle nettsiden. Etter nedlasting, kjør installasjonsprogrammet og følg instruksjonene. Vi bruker den eldre «v1»-versjonen av AutoHotkey, da det er en forskjell i syntaksen mellom v1 og v2. Det som presenteres her fungerer kanskje ikke med v2.
Installasjon av Whisper kan være litt mer komplisert, men veiledning finnes i vår artikkel om hvordan du konverterer tale til tekst med OpenAIs Whisper for Windows.
Når begge er installert, er planen vår som følger:
- Lag et GUI med elementer for Whispers variabler og verdier.
- Lag funksjoner for å hente verdier fra grensesnittet, velge filer og mapper, og sette sammen alt til en brukbar Whisper-kommando.
- Kjør Whisper-kommandoen for å produsere resultater.
Selv om Windows har innebygd støtte for taleskriving, som vist i vår artikkel om hvordan starte taleskriving på Windows 11, er Whisper mer nøyaktig, om enn litt tregere.
Dette prosjektet er en personlig tilpasning av en løsning jeg har utviklet for eget bruk, og jeg er ingen profesjonell programmerer.
Slik oppretter du et nytt AutoHotkey-skript
Det første steget er å lage en ny, tom skriptfil. Plasser den i en egen mappe, for fremtidige forbedringer eller tillegg av flere filer.
- Bruk din foretrukne filbehandler (eller trykk Windows-tasten + E for å åpne Windows Utforsker) og lag en mappe for transkripsjonsappen.
- Høyreklikk i et tomt område i mappen og velg Ny > AutoHotkey-skript.
- Shift + Høyreklikk på filen for å åpne hele kontekstmenyen, og velg å åpne med din foretrukne teksteditor. Windows» Notisblokk fungerer fint.
- Selv om filen er «tom», vil den være forhåndsutfylt med nyttige AutoHotkey-variabler og flagg. La dem være som de er, og skriv all din kode under disse linjene.
Forstå Whispers flagg
Siden vi lager et GUI for en kommandolinjeapp, er det viktig å kjenne til de viktigste variablene og flaggene vi skal bruke. Du finner dem i Whispers dokumentasjon eller på den offisielle Github-siden, og ved å kjøre kommandoer i terminalen din.
Vi lister opp de flaggene vi skal bruke i dette prosjektet. Det anbefales å legge dem inn i skriptet som kommentarer (en per linje, startende med «; «).
; Whisper Flags:;
Opprett GUI med AutoHotkey
Det anbefales å dele skriptet inn i seksjoner ved hjelp av kommentarer for å holde det organisert. Vi begynner med å definere noen variabler, fortsetter med selve GUI-en og avslutter med funksjonsdefinisjoner.
Opprettelse av skjulte variabler
I denne seksjonen definerer vi variabler som vi kanskje vil endre senere, men som ikke trenger å vises i GUI-en. Formateringen er «VariabelNavn = Innhold eller verdi». Hver variabel defineres på en egen linje.
For dette prosjektet har vi definert `OutputFormat` til «txt» og `WhisperExecutable` til Whispers filnavn. Dette gjør det enkelt å endre filformat eller bytte til en alternativ app senere.
OutputFormat = txtWhisperExecutable = whisper
Konfigurere brukeralternativer
Når du bruker Whisper i kommandolinjen, er det tre flagg som lar deg spesifisere:
- Om du skal oversette eller transkribere
- Lydfilens språk
- Språkmodellen som skal brukes (forskjellige størrelser er tilgjengelige, og påvirker ytelsen og kvaliteten).
Den enkleste måten å tilby de samme funksjonene i en GUI er ved hjelp av rullegardinmenyer. Syntaksen for å legge til en rullegardinmeny i AutoHotkey er:
Gui, Add, DropDownList, xPosition yPosition wWidth hHeight vVariable_that_will_hold_selected_value, optionA|optionB|default_optionC||optionD|
Basert på det, legger vi til tre rullegardinmenyer for å velge Whispers språk (engelsk/en eller gresk/el), modell (tiny, base, small, medium, large) og oppgavetype (transkriber eller oversett).
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, transcribe||translate|
For å angi et standardvalg, bruk et dobbelt rørtegn («||») etter valget. I eksemplet har vi valgt engelsk, «small» modell og «transcribe» som standard.
Hvordan veilede Whisper
Siden Whisper er basert på AI, er det ikke mulig å ha full kontroll over hvordan lyden transkriberes. Det står fritt til å velge det den anser som optimalt.
Men i likhet med andre AI-løsninger, kan Whisper akseptere brukeroppfordringer. Ved å legge til en forespørsel kan du «veilede» transkripsjonen.
Fungerte løsningen feil? Du kan prøve å fortelle Whisper «hva lydfilen handler om», inkludert syntaks, akronymer og setninger som du ønsker skal vises i transkripsjonen. Vi legger derfor til et AutoHotkey-tekstredigeringsfelt.
Syntaksen er lik den vi brukte for rullegardinmenyer:
Gui, Add, Edit, x5 w505 h400 vPromptText, %PromptText%
«%PromptText%» forteller AHK å vise innholdet i `PromptText`-variabelen i tekstfeltet (hvis den har en verdi). I det vi lager nå, vil det ikke vise noe, men betrakt det som en plassholder når du justerer skriptet senere for å lagre og laste inn meldinger.
Ønsker du å tilordne en forhåndsdefinert verdi til `PromptText`-variabelen? Legg til noe som dette i variabeldelen av skriptet. Husk å bytte ut «Ditt navn» med ditt eget navn.
PromptText = Transkripsjon av notatene til Ditt navn
Konfigurere handlingsknappene
For å velge filer, mapper og kjøre Whisper etter at alt er satt opp, er det bedre å bruke knapper. Du kan legge til knapper i et AutoHotkey-grensesnitt med:
Gui, Add, Button, xPosition yPosition wWidth hHeight gFunction_To_Perform, Button Text
I motsetning til variabler, som starter med bokstaven «v», starter funksjonsnavn med «g», for «Gå (til dette stedet i skriptet)».
En enkelt knapp i et AutoHotkey-grensesnitt kan også være «standardknapp», som aktiveres hvis du trykker Enter uten å klikke på noe annet i grensesnittet. Dette gjøres ved å legge til «Default» i koordinater-og-funksjon-delen, som du ser i «OK»-knappen:
Gui, Add, Button, x5 w505 h50 gSelectFile, Last inn filGui, Add, Button, x5 w505 h50 gSelectFolder, Velg utdatamappe
Gui, Add, Button, Default x5 w505 h50 gButtonSubmit, OK
Dette definerer tre knapper:
- En knapp merket «Last inn fil» som kjører `SelectFile`-funksjonen.
- En knapp merket «Velg utdatamappe», som kjører `SelectFolder`-funksjonen.
- En knapp merket «OK», som er standard og «kaller» `ButtonSubmit`-funksjonen.
Slik viser du GUI
GUI-en vår er klar, men vil ikke vises før vi «forteller» AutoHotkey å vise den, og hva hver knapp skal gjøre.
Legg til disse to linjene under GUI-definisjonen:
Gui, ShowReturn
Den første linjen «ber» AHK om å vise GUI-vinduet, og den andre markerer slutten av seksjonen.
Funksjonene og funksjonaliteten til appen vår
Selv om GUI-delen er fullført, vil skriptet krasje hvis du prøver å kjøre det. Dette er fordi vi refererer til funksjoner som ikke eksisterer. Derfor skal vi lage disse funksjonene nå.
De tre funksjonene vi trenger er:
- Velg en inndatafil.
- Velg utdatamappen der den transkriberte filen skal lagres.
- Lag en kommando som «setter sammen» alle variablene til en brukbar Whisper-kommando og kjører den.
Valg av inndatafil
Den første funksjonen, som vi allerede har kalt «SelectFile» da vi la til knappen i GUI-en, ser slik ut:
SelectFile:FileSelectFile, SelectedFileReturn
`FileSelectFile` er en AutoHotkey-funksjon som viser en standard filvalgdialog. `SelectedFile` er variabelen som «holder» stien til filen som brukeren velger.
Vi har også lagt til følgende linje over funksjonen:
MsgBox, %SelectedFile%
Dette gjør at AHK viser en meldingsboks med den valgte filen. Dette er nyttig når du feilsøker skriptet. Hvis denne meldingsboksen viser filens sti og navn, er det ikke filvalgsknappen eller funksjonen som trenger å rettes.
Valg av utdatamappe
Funksjonen for å velge en mappe er nesten identisk, men kommandonavnet og variabelen er endret for å vise at det er snakk om mapper i stedet for filer:
SelectFolder:FileSelectFolder, SelectedFolderMsgBox, %SelectedFolder%Return
Den siste funksjonen
Den siste funksjonen vil være den mest komplekse. Den er knyttet til «OK»-knappen, og «samler» alle variablene fra GUI-en, omformer dem til en brukbar kommando og kjører den.
Vi begynner med å definere funksjonens start og slutt:
ButtonSubmit:Return
For å «hente» alle GUI-verdiene, legger du til dette under `ButtonSubmit`-linjen:
Gui Submit, nohide
Følgende linje oppretter en ny variabel som heter `WhisperFlags`. Den legger deretter til alle GUI-variablene som flagg for Whisper-kommandoen.
WhisperFlags = --initial_prompt "%PromptText%" --task %TaskType% --model %SelectedModel% --language %SelectedLanguage% --output_format %OutputFormat% -o "%SelectedFolder%" "%SelectedFile%"
Nå vil vi «fortelle» AHK å bruke standardterminalen (CMD.exe) for å kjøre Whispers fil (som er definert i variabelen `WhisperExecutable`) med GUI-variablene (som nå er «samlet» i `WhisperFlags`-variabelen).
RunWait, cmd.exe /c %WhisperExecutable% %WhisperFlags%
For enklere feilsøking har vi også lagt til en meldingsboks og følgende linje:
Clipboard = %WhisperExecutable% %WhisperFlags%
Dette kopierer hele kommandoen til utklippstavlen. Hvis noe går feil, vil du ha kommandoen tilgjengelig i utklippstavlen i tillegg til meldingboksen.
Åpne en terminal, lim inn kommandoen fra utklippstavlen og se etter eventuelle feil.
For eksempel glemte jeg i starten å sette anførselstegn rundt ledeteksten. Kommandoen feilet derfor da Whisper prøvde å tolke ledeteksten som flagg.
Testing og finjustering
Det var alt! Vi har laget en transkripsjonsapp med AutoHotkeys GUI-funksjoner og en klar-til-bruk AI-løsning.
Prøv å kjøre skriptet (dobbeltklikk på filen), og du bør se GUI-en på skjermen.
- Endre Whispers innstillinger med rullegardinmenyene.
- Skriv en kort beskrivelse av transkripsjonen (og eventuelle viktige ord) i ledetekst-feltet.
- Klikk «Last inn fil» og velg lydfilen du ønsker å transkribere.
- Klikk «Velg utdatamappe» og velg hvor den transkriberte tekstfilen skal lagres.
- Klikk «OK» for å kjøre Whisper. Den lagrer transkripsjonen i den valgte mappen.
Hvis alt fungerte, gå tilbake til skriptet og slett eller kommenter ut (ved å legge til «;») all feilsøkingskode (meldingsbokser og kopier-til-utklippstavle).
Ta Whisper videre med AutoHotkey
Ved å angi standardverdier i GUI-en og legge til en generell ledetekst, kan du konvertere Whisper til en tre-klikks løsning: Ingen betaling for kommersielle løsninger, ingen tredjepartstjenester, ingen kronglete grensesnitt eller terminalkommandoer.