Hvordan lage din egen Windows-transkripsjonsapp med Whisper og AutoHotkey

OpenAIs Whisper er en av de kraftigste løsningene for å gjøre stemmen din om til tekst. Men Whisper kan også være irriterende å bruke, siden du må skrive kommandoer for å transkribere en lydfil til tekst. Men hvorfor gjøre det når vi har AutoHotkey?

Med AutoHotkey kan vi enkelt lage et grunnleggende GUI for kommandolinjeapper som Whisper. Så, la oss gjøre det og se hvordan du kan lage din egen transkripsjonsapp ved å kombinere AutoHotkeys GUI-skapende superkrefter med OpenAIs Whisper som «hjernen» bak knappene.

Legger grunnlaget for Whisper og AutoHotkey

Du kan lage kule skript med AutoHotkey, men det er ikke alt det kan gjøre. For dette prosjektet bruker vi AutoHotkey for å lage en GUI for Whisper. Dette vil tillate oss å bruke OpenAIs stemmegjenkjennings-AI-verktøy ved å klikke på knapper og tilpasse funksjonaliteten ved hjelp av menyer i stedet for å skrive kommandoer.

Dette betyr imidlertid at du må ha både AutoHotkey og Whisper installert for å følge med.

For den første delen av ligningen kan du Last ned AutoHotkey fra den offisielle sidenkjør deretter installasjonsprogrammet og følg de presenterte trinnene.

Merk at vi bruker den eldre «v1»-versjonen av skriptspråket, ikke den nye v2. Det er viktig fordi de to versjonene bruker en noe forskjellig syntaks. Det vi ser her fungerer kanskje ikke hvis du bruker den nye v2.

Den andre delen er mer komplisert, men du kan lære hvordan du gjør det ved å sjekke artikkelen vår om hvordan du gjør stemmen din om til tekst med OpenAIs Whisper for Windows.

Med begge installert er handlingsplanen vår som følger:

  • Lag en GUI med elementer for Whispers variabler og verdier.
  • Lag funksjoner for å hente verdier fra grensesnittet, velg filer og mapper, og sett sammen alt til en brukbar Whisper-kommando.
  • Kjør Whisper-kommandoen for å produsere resultater.
  • Selvfølgelig kan du alltid bruke Windows innebygd støtte for taleskriving, som vi så i vår artikkel om hvordan du starter taleskriving på Windows 11. Likevel, som du vil se mens du bruker det, er Whisper mye mer nøyaktig (men også tregere).

    På en mer personlig måte, bør jeg forklare at jeg ikke er en programmerer, og dette prosjektet er en «remiks» av en løsning laget for personlig bruk.

    Hvordan lage et nytt AutoHotkey-skript

    Det første trinnet er å lage en ny tom skriptfil. Hold den i sin egen mappe, bare i tilfelle du bestemmer deg for å finpusse eller bygge på den, lage flere filer.

  • Kjør favorittfilbehandleren din (eller trykk Windows-tast + E for å starte Windows Utforsker) og lag en mappe for transkripsjonsappen din hvor som helst du vil.
  • Høyreklikk på et tomt sted i vinduet og velg Ny > AutoHotkey-skript for å lage en tom skriptfil.
  • Shift + Høyreklikk på filen for å få tilgang til hele kontekstmenyen og velg å åpne den med din favorittkode eller tekstredigering. Windows» egen Notisblokk vil gjøre det.
  • Til tross for at det er «et tomt skript», vil AHK-filen din allerede være forhåndsutfylt med noen «ting». Dette er nyttige AutoHotkey-variabler og flagg som definerer hvordan det skal fungere på skrivebordet ditt. Ignorer dem, la dem være som de er, og gjør all fremtidig skriving under dem.
  •   5 Windows-verktøy å kjenne til som Power User eller Sysadmin

    Bli kjent med Whisper’s Flags

    Siden vi lager en GUI for en kommandolinjeapp, er det nyttig å ha en referanse til de viktigste variablene og flaggene som vi skal bruke i prosjektet vårt. Du kan sjekke dem ut ved å lese Whispers dokumentasjon, besøk sin offisielle Github-sideog kjøre den i terminalen din.

    Vi vil liste opp de vi vil bruke i dette prosjektet for enkelhets skyld. Vi foreslår at du legger dem til i skriptet ditt som kommentarer (i separate linjer, hver begynner med et «;»-tegn etterfulgt av et mellomrom).

     ; Whisper Flags:;  

    Opprette GUI med AutoHotkey

    Vi foreslår at du deler opp skriptet ditt i seksjoner ved å bruke kommentarer som vi gjorde for å holde det organisert. Vi starter med å definere noen variabler, fortsetter til den faktiske GUI og avslutter med å definere funksjonene.

    Etablering av skjulte variabler

    Vi begynner med en seksjon der vi definerer variabler vi kanskje vil endre i fremtiden, men ikke så ofte at vi ønsker å eksponere dem gjennom GUI, og overkomplisere det. Du kan skrive «Variable_Name = Innhold eller verdi av variabelen» med én variabel og verdipar per linje.

    For dette prosjektet har vi definert en OutputFormat-variabel som vi setter til «txt»-verdien og en WhisperExecutable-variabel som angir Whispers kjørbare filnavn. På denne måten, hvis vi ønsker å bruke den samme løsningen i fremtiden for å lage SRT-undertekstfiler i stedet for TXT-dokumenter eller oppgradere Whisper/switch til en alternativ app, kan vi justere verdiene til disse variablene på det enkelte stedet i stedet for gjennom hele skriptet .

     OutputFormat = txtWhisperExecutable = whisper 

    Sette opp brukeralternativene

    Når du bruker Whisper på kommandolinjen, lar tre av flaggene deg definere:

    • Hvis du gjør oversettelse eller transkripsjon
    • Lydfilens språk
    • Språkmodellen du vil bruke (ulike størrelser er tilgjengelige, hver påvirker ytelsen versus kvaliteten på resultatene).

    Den enkleste måten å tilby samme funksjonalitet gjennom en GUI er gjennom utprøvde rullegardinlister. Syntaksen for å legge til en rullegardinliste til en AutoHotkey GUI er som følger:

     Gui, Add, DropDownList, xPosition yPosition wWidth hHeight vVariable_that_will_hold_selected_value, optionA|optionB|default_optionC||optionD| 

    Basert på det, la oss legge til tre rullegardinlister til skriptet vårt for å velge Whispers språk (mellom engelsk/en og gresk/el), modell (liten, basis, liten, middels, stor) og oppgavetype (transkribere eller oversette) .

     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 alternativ som standardvalg, bruk et dobbeltrørsymbol (“|”) etter det. Du kan se at i vårt eksempel har vi satt språket vårt til en, SelectedModel til liten og TaskType til å transkribere.

      Opprett og administrer Windows-brukerkontoer eller tillatelser med et grunnleggende brukergrensesnitt

    Hvordan veilede Whisper

    Siden Whisper er AI-basert, er det ingen måte å ha absolutt kontroll over hvordan Whisper transkriberer lyd. Det er fritt å velge hva det anser som optimalt.

    Men, som andre AI-løsninger, kan Whisper godta brukeroppfordringer. Ved å lage en forespørsel kan du «veilede» hvordan den transkriberer lyden din.

    Mislyktes løsningen vi lager noe riktig? Du kan prøve å «forklare» til Whisper «hva stemmefilen handler om», inkludert syntaksen til ord, akronymer og setninger i ledeteksten slik du vil at de skal vises i transkripsjonen. For det legger vi til et AutoHotkey-tekstredigeringsfelt.

    Syntaksen er ikke for annerledes enn det vi brukte for å legge til rullegardinlister ovenfor:

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

    «%PromptText%» på slutten «berer» AHK å vise PromptText-variabelens innhold (hvis den allerede er tildelt en verdi) i tekstfeltet. Det vil ikke vise noe i skriptet vi lager, men betrakt det som en plassholder for når du til slutt justerer skriptet i fremtiden også for å lagre og laste inn meldinger!

    Vil du foretrekke å tilordne en forhåndsdefinert verdi til PromptText-variabelen? Legg til noe sånt som følgende til Variables-delen av skriptet. Husk å erstatte «Ditt navn» med ditt faktiske navn.

     PromptText = Transcription of Your Name's notes 

    Sette opp handlingsknappene

    For å velge filer, mapper og kjøre Whisper etter at vi har konfigurert alt, er det bedre å bruke knapper. Du kan legge til knapper til et AHK-laget grensesnitt ved å bruke følgende:

     Gui, Add, Button, xPosition yPosition wWidth hHeight gFunction_To_Perform, Button Text 

    Legg merke til at i motsetning til variabler i GUI-elementer, som begynner med bokstaven «v», begynner funksjonsnavn med «g», for «Gå (til dette stedet i skriptet)».

    En enkelt knapp i et AHK-grensesnitt kan også betraktes som «standarden», som vil bli aktivert hvis du ikke klikker noe sted på GUI og trykker Enter. Dette defineres ved å legge til «standard» i koordinater-og-funksjon-delen, som du vil legge merke til i «OK»-knappen vår:

     Gui, Add, Button, x5 w505 h50 gSelectFile, Load FileGui, Add, Button, x5 w505 h50 gSelectFolder, Choose Output Folder
    ​​​​​​​Gui, Add, Button, Default x5 w505 h50 gButtonSubmit, OK

    Med ovenstående definerer vi tre knapper:

    • En merket «Load File» som, når den klikkes, vil kjøre SelectFile-funksjonen.
    • En merket «Choose Output Folder», som vil kjøre SelectFolder-funksjonen.
    • En merket «OK», valgt som standard, «kaller» ButtonSubmit-funksjonen.

    Slik viser du GUI

    Vår GUI er klar, men vil ikke vises på skjermen vår fordi vi ikke har «fortalt» AutoHotkey å vise den eller hva hver knapp skal gjøre.

    For det, legg til følgende to linjer under de som definerer din GUI:

     Gui, ShowReturn 

    Den første linjen «berer» AHK å vise GUI-vinduet, mens den andre markerer delens slutt.

    Funksjonene og funksjonaliteten til appen vår

    Selv om vi har fullført GUI-delen, vil det krasje hvis du prøver å kjøre skriptet. Det er fordi vi refererer til ikke-eksisterende funksjoner i den. Så vårt neste trekk er å lage disse funksjonene.

    De tre funksjonene vi ønsker er:

    • Velg en inndatafil.
    • Velg utdatamappen der den transkriberte filen skal lagres.
    • Lag en kommando som vil «sette sammen» alle variabler til en brukbar Whisper-kommando, i likhet med det vi selv skriver i en terminal, og deretter kjøre den.
      Slik tilbakestiller du en Windows 11-PC til fabrikk

    Valg av inndatafil

    Den første funksjonen, som vi allerede har kalt «SelectFile» da vi la til knappen til GUI, er:

     SelectFile:FileSelectFile, SelectedFileReturn 

    FileSelectFile er en AutoHotkey-funksjon som viser en typisk filforespørsel, slik at brukeren kan velge en fil. SelectedFile er variabelen i skriptet vårt som vil «holde» banen til filen brukeren valgte.

    Men som du vil se i skjermbildene våre, har vi også lagt til følgende linje rett over funksjonen som avslutter «retur»:

     MsgBox, %SelectedFile% 

    Dette vil få AHK til å vise en meldingsboks med den valgte filen etter at vi har valgt den, noe som er nyttig når du feilsøker skriptet ditt. Hvis denne meldingsboksen viser den valgte filens bane og navn, er det ikke filvalgsknappen eller funksjonen som må fikses.

    Utgangsmappevalg

    Funksjonen for å velge en mappe er nesten identisk, med bare kommandoens navn og variabel som endres, for å vise at vi har å gjøre med mapper i stedet for filer:

     SelectFolder:FileSelectFolder, SelectedFolderMsgBox, %SelectedFolder%Return 

    Den endelige funksjonen

    Den endelige funksjonen vil være den mest kompliserte. Tilordnet til OK-knappen, vil dette «samle» alle variabelverdier fra GUI, omforme dem til en brukbar kommando, og deretter kjøre den.

    Vi begynner med å angi funksjonens begynnelse og slutt:

     ButtonSubmit:Return 

    For å «ta» alle GUI-verdiene, legg til følgende under ButtonSubmit-linjen:

     Gui Submit, nohide 

    Følgende linje oppretter en ny variabel kalt «WhisperFlags». Den legger så 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%" 

    Deretter vil vi «fortelle» AHK å bruke standardterminalen (CMD.exe) for å kjøre Whispers kjørbare (som vi definerte med WhisperExecutable-variabelen) med GUI-variablene (som nå er «samlet» i den enkelte WhisperFlags-variabelen).

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

    For enda enklere feilsøking har vi også lagt til en meldingsboks, som før, men også lagt til følgende linje:

     Clipboard = %WhisperExecutable% %WhisperFlags% 

    Dette vil kopiere til utklippstavlen hele kommandoen som er gitt til CMD. Så hvis noe feiler, i stedet for bare å se kommandoen i en av AHKs meldingsbokser, vil du også ha den tilgjengelig i utklippstavlen.

    Åpne en terminal, lim inn kommandoen fra utklippstavlen, og sjekk feilene som dukker opp for å finne potensielle problemer.

    For eksempel, mens jeg jobbet med manuset, glemte jeg først å ha ledeteksten i anførselstegn. Dermed mislyktes kommandoen, siden Whisper prøvde å analysere ledeteksten som flagg.

    Testing og endelige tilpasninger

    Det var det – vi har nettopp laget en transkripsjonsapp ved hjelp av AutoHotkeys GUI-skapende evner og en klar til bruk AI-transkripsjonsløsning.

    Prøv å kjøre skriptet (dobbeltklikk på filen), og du bør se GUI-en din på skjermen.

    • Endre Whispers innstillinger ved å bruke rullegardinlistene øverst.
    • Skriv inn en kort beskrivelse av transkripsjonen (og noen termer) i Spør-feltet.
    • Klikk på Last inn fil-knappen og velg lydfilen du vil transkribere.
    • Klikk på Velg utdatamappe-knappen og velg hvor den produserte tekstfilen skal lagres.
    • Klikk på OK for å slippe løs Whisper, som konfigurert av GUI, på den valgte lydfilen, og lagre transkripsjonen som en tekstfil i mappen du valgte.

    Hvis alt fungerte, gå tilbake til skriptet og enten slett eller kommenter ut (ved å legge til en «;» i begynnelsen) all feilsøkingsfunksjonaliteten (meldingsbokser og kopier-til-utklippstavle-linjer).

    Tar Whisper Videre med AutoHotkey

    Ved å stille inn standardverdiene til GUI-en din og kanskje legge til en generisk ledetekst, kan du gjøre Whisper om til en tre-klikk-å-transkribere-løsning: Ingen betaling for kommersielle løsninger, tredjepartstjenester, fikle med kompliserte grensesnitt eller skrive inn en terminal.