Het maken van een met drie klikken te gebruiken maar zeer nauwkeurige transcriptie-app klinkt moeilijk, maar dat is het niet. Laten we Whisper voorstellen aan AutoHotkey.

Whisper van OpenAI is een van de krachtigste oplossingen om uw stem in tekst om te zetten. Whisper kan echter ook vervelend zijn om te gebruiken, omdat je commando's moet typen om een ​​audiobestand naar tekst te transcriberen. Maar waarom zou je dat doen als we AutoHotkey hebben?

Met AutoHotkey kunnen we moeiteloos een basis-GUI maken voor opdrachtregel-apps zoals Whisper. Dus laten we dat doen en kijken hoe u uw eigen transcriptie-app kunt maken door AutoHotkey's GUI-makende superkrachten te combineren met OpenAI's Whisper als het "brein" achter de knoppen.

De basis leggen voor Whisper en AutoHotkey

Je kunt coole scripts maken met AutoHotkey, maar dat is niet alles wat het kan doen. Voor dit project gebruiken we AutoHotkey om een ​​GUI voor Whisper te maken. Hierdoor kunnen we de AI-tool voor spraakherkenning van OpenAI gebruiken door op knoppen te klikken en de functionaliteit aan te passen met behulp van menu's in plaats van commando's te typen.

Dit betekent echter dat u zowel AutoHotkey als Whisper moet hebben geïnstalleerd om mee te kunnen doen.

Voor het eerste deel van de vergelijking kan dat download AutoHotkey van de officiële site, voer vervolgens het installatieprogramma uit en volg de gepresenteerde stappen.

Merk op dat we de oudere "v1"-versie van de scripttaal zullen gebruiken, niet de nieuwe v2. Dat is belangrijk omdat de twee versies een iets andere syntaxis gebruiken. Wat we hier zullen zien, werkt mogelijk niet als u de nieuwe v2.

Het tweede deel is ingewikkelder, maar je kunt leren hoe je het moet doen door ons artikel op te lezen hoe u uw stem in tekst kunt veranderen met Whisper voor Windows van OpenAI.

Met beide geïnstalleerd, is ons actieplan als volgt:

  1. Maak een GUI met elementen voor de variabelen en waarden van Whisper.
  2. Maak functies om waarden uit de interface te halen, bestanden en mappen te selecteren en alles samen te voegen tot een bruikbare Whisper-opdracht.
  3. Voer de opdracht Whisper uit om resultaten te produceren.

Je kunt natuurlijk altijd gebruikmaken van de ingebouwde ondersteuning van Windows voor spraakgestuurd typen, zoals we zagen in ons artikel over hoe spraakgestuurd typen te starten op Windows 11. Maar zoals je zult zien tijdens het gebruik, is Whisper veel nauwkeuriger (maar ook langzamer).

Op een meer persoonlijke noot moet ik uitleggen dat ik geen programmeur ben en dat dit project een "remix" is van een oplossing gemaakt voor persoonlijk gebruik.

Hoe maak je een nieuw AutoHotkey-script

De eerste stap is het maken van een nieuw leeg scriptbestand. Bewaar het in zijn eigen map, voor het geval u besluit het aan te passen of erop voort te bouwen en meer bestanden te maken.

  1. Voer uw favoriete bestandsbeheerder uit (of druk op Windows-sleutel + E om Windows Verkenner te starten) en maak een map voor uw transcriptie-app waar u maar wilt.
  2. Klik met de rechtermuisknop op een lege plek in het venster en selecteer Nieuw > AutoHotkey-script om een ​​leeg scriptbestand te maken.
  3. Shift + klik met de rechtermuisknop op het bestand om toegang te krijgen tot het volledige contextmenu en selecteer om het te openen met uw favoriete code of teksteditor. Windows eigen Kladblok zal ik doen.
  4. Ondanks dat het "een leeg script" is, zal je AHK-bestand al vooraf gevuld zijn met wat "dingen". Dat zijn handige AutoHotkey-variabelen en vlaggen die bepalen hoe het op uw bureaublad zou moeten werken. Negeer ze, laat ze zoals ze zijn en voer al je toekomstige typen eronder uit.

De vlaggen van Whisper leren kennen

Aangezien we een GUI maken voor een opdrachtregelapp, is het handig om een ​​verwijzing te hebben naar de belangrijkste variabelen en vlaggen die we in ons project zullen gebruiken. Je kunt ze bekijken door de documentatie van Whisper te lezen, bezoeken de officiële Github-pagina, en voer het uit in uw terminal.

We zullen voor het gemak degenen vermelden die we in dit project zullen gebruiken. We raden u aan deze als commentaar aan uw script toe te voegen (in afzonderlijke regels, elk beginnend met een ";"-teken gevolgd door een spatie).

; Fluistervlaggen:; --initial_prompt PROMPT_TEXT; --output_format txt; -o OUTPUT_FOLDER; --model MODEL_TO_USE; --taak TRANSCRIJVEN/VERTALEN; --taal EN/EL

De GUI maken met AutoHotkey

We raden u aan uw script op te splitsen in secties met behulp van opmerkingen zoals wij deden om het georganiseerd te houden. We beginnen met het definiëren van enkele variabelen, gaan verder met de daadwerkelijke GUI en eindigen met het definiëren van de functies.

We beginnen met een sectie waar we variabelen definiëren die we in de toekomst misschien willen veranderen, maar niet zo vaak dat we ze via de GUI willen onthullen, wat het te ingewikkeld maakt. U kunt "Variable_Name = Inhoud of waarde van de variabele" typen met één variabele en waardepaar per regel.

Voor dit project hebben we een gedefinieerd Uitvoerformaat variabele die we hebben ingesteld op de "tekst"waarde en een WhisperUitvoerbaar variabele vermelding Whisper's uitvoerbare bestandsnaam. Op deze manier, als we in de toekomst dezelfde oplossing willen gebruiken om SRT-ondertitelingsbestanden te maken in plaats van TXT-documenten of om te upgraden Fluister/schakel over naar een alternatieve app, dan kunnen we de waarden van die variabelen op die ene plek aanpassen in plaats van overal script.

OutputFormat = txtWhisperExecutable = fluisteren

De gebruikersopties instellen

Wanneer u Whisper op de opdrachtregel gebruikt, kunt u met drie van zijn vlaggen definiëren:

  • Als je het doet vertaling of transcriptie
  • De audiobestanden taal
  • De taal model die u wilt gebruiken (er zijn verschillende formaten beschikbaar, die elk van invloed zijn op de prestaties versus de kwaliteit van de resultaten).

De eenvoudigste manier om dezelfde functionaliteit via een GUI aan te bieden, is via beproefde vervolgkeuzelijsten. De syntaxis voor het toevoegen van een vervolgkeuzelijst aan een AutoHotkey GUI is als volgt:

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

Laten we op basis daarvan drie vervolgkeuzelijsten aan ons script toevoegen om de taal van Whisper te selecteren (tussen Engels/en en Greek/el), model (tiny, base, small, medium, large) en type taak (transcriberen of vertalen).

Gui, Add, DropDownList, x5 y5 w165 h50 vSelectedLanguage, en||el
Gui, Add, DropDownList, x175 y5 w165 h100 vSelectedModel, tiny|base|small||medium|large|
Gui, Toevoegen, DropDownList, x345 y5 w165 h100 vTaskType, transcriberen||vertalen|

Om een ​​optie in te stellen als de standaardselectie, gebruikt u een dubbel-pijpsymbool ("|") erachter. U kunt zien dat we in ons voorbeeld onze taal hebben ingesteld op nl, Geselecteerd model naar klein, en TaskType naar transcriberen.

Hoe Whisper te begeleiden

Omdat Whisper op AI is gebaseerd, is er geen manier om absolute controle te hebben over hoe Whisper audio transcribeert. Het is vrij om te kiezen wat het optimaal acht.

Net als andere AI-oplossingen kan Whisper echter gebruikersprompts accepteren. Door een prompt te maken, kunt u "begeleiden" hoe deze uw audio transcribeert.

Heeft de oplossing die we maken iets niet correct kunnen transcriberen? U kunt proberen aan Whisper "uit te leggen" "waar het spraakbestand over gaat", inclusief de syntaxis van woorden, acroniemen en zinnen in uw prompt zoals u wilt dat ze in de transcriptie verschijnen. Daarvoor voegen we een AutoHotkey-tekstbewerkingsveld toe.

De syntaxis verschilt niet veel van wat we gebruikten voor het toevoegen van vervolgkeuzelijsten hierboven:

Gui, toevoegen, bewerken, x5 w505 h400 vPromptText, %PromptText%

De "%PromptText%" aan het einde "vertelt" AHK om de inhoud van de PromptText-variabele weer te geven (als er al een waarde aan is toegewezen) in het tekstveld. Het zal niets laten zien in het script dat we aan het maken zijn, maar beschouw het als een tijdelijke aanduiding voor wanneer je het script uiteindelijk in de toekomst aanpast, ook om prompts op te slaan en te laden!

Wilt u liever een vooraf gedefinieerde waarde toekennen aan de PromptTekst variabel? Voeg iets als het volgende toe aan de Variabelen gedeelte van het script. Vergeet niet om "Uw naam" te vervangen door uw werkelijke naam.

PromptText = Transcriptie van de notities van uw naam

De actieknoppen instellen

Voor het kiezen van bestanden, mappen en het uitvoeren van Whisper nadat we alles hebben ingesteld, is het beter om knoppen te gebruiken. U kunt op de volgende manier knoppen toevoegen aan een door AHK gemaakte interface:

Gui, Toevoegen, Knop, xPositie yPositie wWidth hHeight gFunction_To_Perform, Knoptekst

Merk op dat in tegenstelling tot variabelen in GUI-elementen, die beginnen met de letter "v", functienamen beginnen met "g", voor "Ga (naar deze plek van het script)".

Een enkele knop van een AHK-interface kan ook worden beschouwd als "de standaardknop", die wordt geactiveerd als u nergens in de GUI klikt en op drukt Binnenkomen. Dit wordt gedefinieerd door toe te voegen "standaard" in de coördinaten-en-functie-sectie, zoals je zult zien in onze "OK"-knop:

Gui, Toevoegen, Knop, x5 w505 h50 gSelectFile, Laden FileGui, Toevoegen, Knop, x5 w505 h50 gSelectFolder, KiezenUitgang Map
Gui, toevoegen, knop, Standaard x5 w505 h50 gButtonVerzenden, OK

Met het bovenstaande definiëren we drie knoppen:

  • Een gelabeld "Laad bestand" die, wanneer erop wordt geklikt, het Selecteer bestand functie.
  • Een gelabeld "Kies Uitvoermap", die de Selecteer map functie.
  • Een gelabeld "OK", standaard geselecteerd, "bellen" de KnopVerzenden functie.

Hoe u uw GUI kunt weergeven

Onze GUI is klaar maar verschijnt niet op ons scherm omdat we AutoHotkey niet hebben "verteld" om het te laten zien of wat elke knop zou moeten doen.

Voeg daarvoor de volgende twee regels toe onder de regels die uw GUI definiëren:

Gui, ShowReturn

De eerste regel "vertelt" AHK om het venster van de GUI weer te geven, terwijl de tweede regel het einde van de sectie markeert.

De functies en functionaliteit van onze app

Hoewel we de GUI-sectie hebben voltooid, zal het crashen als u het script probeert uit te voeren. Dat komt omdat we verwijzen naar niet-bestaande functies erin. Dus onze volgende stap is om die functies te creëren.

De drie functies die we willen zijn:

  • Selecteer een invoerbestand.
  • Selecteer de uitvoermap waar het getranscribeerde bestand zal worden opgeslagen.
  • Maak een commando dat alle variabelen "assembleert" tot een bruikbaar Whisper-commando, vergelijkbaar met wat we zelf in een terminal zouden typen, en voer het dan uit.

Selectie invoerbestand

De eerste functie, die we al hebben genoemd "Selecteer bestand" toen we de knop aan de GUI toevoegden, is:

Selecteer bestand:FileSelectFile, SelectedFileReturn

BestandSelecteerBestand is een AutoHotkey-functie die een typische bestandsaanvrager weergeeft, waardoor de gebruiker een bestand kan selecteren. GeselecteerdBestand is de variabele in ons script die het pad naar het door de gebruiker geselecteerde bestand "vasthoudt".

Zoals u echter zult zien in onze schermafbeeldingen, hebben we ook de volgende regel toegevoegd direct boven de functie-einde "return":

MsgBox, %SelectedFile%

Dit zal AHK laten zien a Berichten box met het geselecteerde bestand nadat we het hebben gekozen, wat handig is bij het oplossen van problemen met uw script. Als dit berichtvenster het pad en de naam van uw geselecteerde bestand toont, is het niet de knop of functie voor het selecteren van bestanden die moet worden gecorrigeerd.

Selectie van uitvoermap

De functie voor het selecteren van een map is bijna identiek, alleen de naam en variabele van het commando veranderen, om te laten zien dat we te maken hebben met mappen in plaats van met bestanden:

SelectFolder: FileSelectFolder, SelectedFolderMsgBox, %SelectedFolder%Opbrengst

De laatste functie

De laatste functie zal de meest gecompliceerde zijn. Toegewezen aan de knop OK, zal dit alle variabele waarden van de GUI "verzamelen", ze omzetten in een bruikbare opdracht en deze vervolgens uitvoeren.

We beginnen met het aangeven van het begin en het einde van de functie:

KnopVerzenden:Opbrengst

Om alle waarden van de GUI te "grijpen", voegt u het volgende toe onder de KnopVerzenden lijn:

Gui indienen, niet verbergen

De volgende regel maakt een nieuwe variabele aan met de naam "WhisperVlaggen". Vervolgens voegt het alle variabelen van de GUI toe als vlaggen voor het Whisper-commando.

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

Vervolgens "vertellen" we AHK om de standaardterminal (CMD.exe) te gebruiken om het uitvoerbare bestand van Whisper uit te voeren (dat we hebben gedefinieerd met de WhisperUitvoerbaar variabele) met de variabelen van de GUI (die nu zijn "geassembleerd" in de single WhisperVlaggen variabel).

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

Om het oplossen van problemen nog eenvoudiger te maken, hebben we ook een msgbox toegevoegd, zoals eerder, maar ook de volgende regel:

Klembord = %WhisperExecutable% %WhisperFlags%

Dit kopieert naar de Klembord de volledige opdracht die aan CMD is gegeven. Dus als er iets niet lukt, ziet u de opdracht niet alleen in een van de berichtvensters van AHK, maar heeft u deze ook beschikbaar op uw klembord.

Open een terminal, plak de opdracht van het klembord en controleer de fouten die verschijnen om mogelijke problemen op te sporen.

Tijdens het werken aan het script vergat ik bijvoorbeeld in eerste instantie om de prompt tussen aanhalingstekens te plaatsen. De opdracht is dus mislukt, omdat Whisper probeerde de prompt als vlaggen te ontleden.

Testen en laatste aanpassingen

Dat was het - we hebben zojuist een transcriptie-app gemaakt met behulp van AutoHotkey's GUI-mogelijkheden en een kant-en-klare AI-transcriptieoplossing.

Probeer uw script uit te voeren (dubbelklik op het bestand) en u zou uw GUI op uw scherm moeten zien.

  • Wijzig de instellingen van Whisper met behulp van de vervolgkeuzelijsten bovenaan.
  • Typ een korte beschrijving van uw transcriptie (en enkele termen) in het Snel veld.
  • Klik op de Laad bestand en kies het audiobestand dat u wilt transcriberen.
  • Klik op de Kies Uitvoermap knop en selecteer waar het geproduceerde tekstbestand moet worden opgeslagen.
  • Klik op OK om Whisper, zoals geconfigureerd door uw GUI, los te laten op uw geselecteerde audiobestand en de transcriptie op te slaan als een tekstbestand in de map die u hebt geselecteerd.

Als alles werkte, ga dan terug naar je script en verwijder of becommentarieer (door een ";" aan het begin toe te voegen) alle functionaliteit voor het oplossen van problemen (berichtenvensters en regels voor kopiëren naar klembord).

Whisper verder brengen met AutoHotkey

Door de standaardwaarden van uw GUI correct in te stellen en misschien een generieke prompt toe te voegen, kunt u Whisper veranderen in een oplossing met drie klikken om te transcriberen: niet betalen voor commerciële oplossingen, services van derden, gehannes met gecompliceerde interfaces of typen in een terminal.