OpenAI-jev šapat je izvanredan alat za pretvaranje govora u tekst. Međutim, upotreba Whispera može biti pomalo nezgrapna, jer zahteva unos komandi za transkripciju audio datoteka. Zašto bismo to radili kada imamo AutoHotkey?
Uz AutoHotkey, lako možemo kreirati jednostavan grafički korisnički interfejs (GUI) za aplikacije komandne linije poput Whispera. Hajde da to uradimo i vidimo kako možete kreirati sopstvenu aplikaciju za transkripciju kombinovanjem AutoHotkey-jevih moćnih GUI funkcija sa OpenAI-jevim Whisperom kao „mozgom“ koji stoji iza svih komandi.
Postavljanje osnova za Whisper i AutoHotkey
AutoHotkey vam omogućava da kreirate sjajne skripte, ali to nije sve što može. U ovom projektu, koristićemo AutoHotkey za izradu GUI-ja za Whisper. Ovo će nam omogućiti da koristimo OpenAI-jev alat za prepoznavanje glasa klikom na dugmad i prilagođavanjem njegovih opcija pomoću menija, umesto kucanja komandi.
Da biste pratili ovaj tutorijal, potrebno je da imate instalirane i AutoHotkey i Whisper.
Za prvi deo, preuzmite AutoHotkey sa njegove zvanične stranice, a zatim pokrenite instalater i pratite korake.
Važno je napomenuti da ćemo koristiti stariju „v1“ verziju skriptnog jezika, a ne novu v2. Ove dve verzije koriste nešto drugačiju sintaksu. Skripta koju ovde vidite možda neće raditi ako koristite novu v2 verziju.
Drugi deo je malo komplikovaniji, ali detaljna uputstva možete pronaći u našem članku o tome kako pretvoriti glas u tekst pomoću OpenAI Whisper za Windows.
Kada instalirate oba programa, sledi plan akcije:
- Napravite GUI sa elementima za Whisperove promenljive i vrednosti.
- Kreirajte funkcije za preuzimanje vrednosti iz interfejsa, biranje datoteka i fascikli, i sastavljanje svega u upotrebljivu Whisper komandu.
- Pokrenite Whisper komandu za generisanje rezultata.
Naravno, uvek možete koristiti Windows-ovu ugrađenu podršku za glasovno kucanje, kao što smo opisali u našem članku o pokretanju glasovnog kucanja u operativnom sistemu Windows 11. Međutim, kako ćete videti tokom korišćenja, Whisper je mnogo precizniji (ali i sporiji).
Lično govoreći, važno je da napomenem da nisam programer, a ovaj projekat je „remiks“ rešenja koje sam napravio za ličnu upotrebu.
Kako napraviti novu AutoHotkey skriptu
Prvi korak je kreiranje nove prazne datoteke skripte. Preporučuje se da je sačuvate u posebnom folderu, u slučaju da je želite prilagoditi ili proširiti, kreirajući više datoteka.
- Pokrenite svoj omiljeni upravitelj datoteka (ili pritisnite taster Windows + E da biste otvorili Windows Explorer) i napravite folder za vašu aplikaciju za transkripciju gde god želite.
- Desnim klikom miša na prazno mesto u prozoru, izaberite Novo > AutoHotkey Script da biste kreirali praznu skriptu.
- Držite taster Shift i desnim klikom na datoteku otvorite celokupni kontekstualni meni, a zatim je otvorite u vašem omiljenom kodu ili uređivaču teksta. Windows-ov Notepad je sasvim dobar za ovo.
- Iako se radi o „praznoj skripti“, vaša AHK datoteka će već biti popunjena nekim „stvarima“. To su korisne AutoHotkey promenljive i zastavice koje definišu način na koji bi trebalo da radi na vašoj radnoj površini. Ignorišite ih, ostavite ih takve kakve jesu, i sve svoje buduće naredbe kucajte ispod njih.
Upoznavanje sa Whisperovim opcijama (flags)
Budući da pravimo GUI za aplikaciju komandne linije, korisno je imati pregled glavnih promenljivih i opcija koje ćemo koristiti u našem projektu. Možete ih proveriti čitanjem Whisperove dokumentacije, posetom zvanične GitHub stranice i pokretanjem u vašem terminalu.
Radi praktičnosti, navesti ćemo one koje ćemo koristiti u ovom projektu. Preporučujemo da ih dodate u svoju skriptu kao komentare (u odvojenim redovima, od kojih svaki počinje znakom „;“, nakon čega sledi razmak).
; Whisper Options:;
Kreiranje GUI-ja pomoću AutoHotkey-a
Preporučujemo da svoju skriptu podelite na odeljke koristeći komentare, kao što smo mi to uradili, kako bi bila organizovana. Počećemo definisanjem nekoliko promenljivih, nastaviti sa izradom GUI-ja, a završićemo definisanjem njegovih funkcija.
Uspostavljanje skrivenih promenljivih
Počećemo sa odeljkom u kome ćemo definisati promenljive koje možda želimo da promenimo u budućnosti, ali ne tako često da bi ih prikazali u GUI-ju, čime bi ga nepotrebno zakomplikovali. Možete upisati „Variable_Name = Sadržaj ili vrednost promenljive“, sa jednim parom promenljive i vrednosti po redu.
Za ovaj projekat, definisali smo promenljivu OutputFormat sa vrednošću „txt“, i promenljivu WhisperExecutable koja navodi naziv Whisperovog izvršnog fajla. Na taj način, ako želimo da koristimo isto rešenje u budućnosti za kreiranje SRT titlova umesto TXT dokumenata, ili nadogradimo Whisper/pređemo na alternativnu aplikaciju, možemo da prilagodimo vrednosti tih promenljivih na jednom mestu, umesto u celoj skripti.
OutputFormat = txtWhisperExecutable = whisper
Podešavanje korisničkih opcija
Kada koristite Whisper u komandnoj liniji, tri opcije vam omogućavaju da definišete:
- Da li obavljate prevod ili transkripciju
- Jezik audio datoteke
- Jezički model koji želite da koristite (dostupne su različite veličine, od kojih svaka utiče na performanse i kvalitet rezultata).
Najjednostavniji način da ponudimo istu funkcionalnost putem GUI-ja je korišćenjem padajućih lista. Sintaksa za dodavanje padajuće liste u AutoHotkey GUI je sledeća:
Gui, Add, DropDownList, xPosition yPosition wWidth hHeight vVariable_that_will_hold_selected_value, optionA|optionB|default_optionC||optionD|
Na osnovu ovoga, dodaćemo tri padajuće liste u našu skriptu za odabir Whisperovog jezika (između engleskog/en i grčkog/el), modela (tiny, base, small, medium, large) i tipa zadatka (transkripcija ili prevod).
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|
Da biste podesili opciju kao podrazumevanu, koristite simbol dvostruke vertikalne crte („|“) iza nje. U našem primeru, podesili smo jezik na en, SelectedModel na small i TaskType na transkripciju.
Kako usmeriti Whisper
S obzirom da je Whisper zasnovan na veštačkoj inteligenciji, ne postoji način da imate apsolutnu kontrolu nad načinom na koji transkribuje zvuk. Slobodno bira ono što smatra optimalnim.
Međutim, kao i druga AI rešenja, Whisper može da prihvati korisničke zahteve. Kreiranjem upita možete „usmeriti“ kako da transkribuje vaš zvuk.
Da li rešenje koje pravimo nije uspelo da transkribuje nešto ispravno? Možete da pokušate da „objasnite“ Whisperu „o čemu se radi u audio datoteci“, uključujući sintaksu reči, akronima i fraza onako kako želite da se pojave u transkripciji. Za ovo ćemo dodati polje za uređivanje teksta u AutoHotkey.
Sintaksa se ne razlikuje mnogo od one koju smo koristili za dodavanje padajućih lista:
Gui, Add, Edit, x5 w505 h400 vPromptText, %PromptText%
„%PromptText%“ na kraju „govori“ AHK-u da prikaže sadržaj promenljive PromptText (ako joj je već dodeljena vrednost) unutar tekstualnog polja. Neće pokazati ništa u skripti koju pravimo, ali smatrajte je čuvarom mesta kada eventualno prilagodite skriptu u budućnosti, kako bi sačuvali i učitali upite!
Želite li dodeliti unapred definisanu vrednost promenljivoj PromptText? Dodajte nešto poput sledećeg u odeljak za promenljive skripte. Ne zaboravite da zamenite „Vaše ime“ svojim pravim imenom.
PromptText = Transcription of Your Name's notes
Podešavanje akcionih dugmadi
Za biranje datoteka, fascikli i pokretanje Whispera nakon što smo sve podesili, najbolje je koristiti dugmad. Dugmad u interfejsu napravljenom pomoću AHK možete dodati na sledeći način:
Gui, Add, Button, xPosition yPosition wWidth hHeight gFunction_To_Perform, Button Text
Obratite pažnju da, za razliku od promenljivih u GUI elementima, koje počinju slovom „v“, imena funkcija počinju sa „g“, za „Idi (na ovo mesto u skripti)“.
Jedno dugme AHK interfejsa se može smatrati „podrazumevanim“ i aktiviraće se ako nigde ne kliknete u GUI-ju i pritisnete Enter. To se definiše dodavanjem „default“ u odeljku za koordinate i funkcije, kao što ćete primetiti na našem dugmetu „OK“:
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
Gore navedenim, definišemo tri dugmeta:
- Jedno sa oznakom „Učitaj datoteku“ koje će, kada se klikne, pokrenuti funkciju SelectFile.
- Jedno sa oznakom „Izaberi izlazni folder“, koje će pokrenuti funkciju SelectFolder.
- Jedno sa oznakom „OK“, podrazumevano izabrano, koje „poziva“ funkciju ButtonSubmit.
Kako prikazati svoj GUI
Naš GUI je spreman, ali se neće pojaviti na ekranu jer nismo „rekli“ AutoHotkeyu da ga prikaže, niti šta bi trebalo da radi svako dugme.
Da biste to uradili, dodajte sledeća dva reda ispod onih koji definišu vaš GUI:
Gui, ShowReturn
Prvi red „govori“ AHK-u da prikaže prozor GUI-ja, dok drugi označava kraj odeljka.
Funkcije i funkcionalnost naše aplikacije
Iako smo završili odeljak za GUI, ako pokušate da pokrenete skriptu, ona će se srušiti. To je zato što se u njoj pozivamo na nepostojeće funkcije. Dakle, naš sledeći korak je kreiranje tih funkcija.
Tri funkcije koje su nam potrebne su:
- Izaberite ulaznu datoteku.
- Izaberite izlazni folder u koji će se čuvati transkribovana datoteka.
- Napravite komandu koja će „sastaviti“ sve promenljive u upotrebljivu Whisper komandu, slično onome što bismo sami upisali u terminal, a zatim je pokrenuli.
Izbor ulazne datoteke
Prva funkcija, koju smo već nazvali „SelectFile“ kada smo dodali dugme u GUI, je:
SelectFile:FileSelectFile, SelectedFileReturn
FileSelectFile je funkcija AutoHotkey koja prikazuje tipičan zahtev za izbor datoteka, omogućavajući korisniku da izabere datoteku. SelectedFile je promenljiva u našoj skripti koja će „čuvati“ putanju do datoteke koju je korisnik izabrao.
Međutim, kao što ćete videti na snimcima ekrana, dodali smo i sledeći red odmah iznad „return“ koji završava funkciju:
MsgBox, %SelectedFile%
Ovo će AHK prikazati okvir za poruke sa izabranom datotekom nakon što je izaberemo, što je korisno prilikom rešavanja problema u skripti. Ako se u okviru prikaže putanja do vaše izabrane datoteke, znate da je dugme za odabir datoteke ispravno.
Izbor izlazne fascikle
Funkcija za izbor fascikle je skoro identična, samo se menja ime komande i promenljiva, kako bi se označilo da radimo sa fasciklama, a ne datotekama:
SelectFolder:FileSelectFolder, SelectedFolderMsgBox, %SelectedFolder%Return
Završna funkcija
Poslednja funkcija će biti najkomplikovanija. Povezana sa dugmetom OK, ova funkcija će „sakupiti“ sve vrednosti promenljivih iz GUI-ja, pretvoriti ih u upotrebljivu komandu, a zatim je pokrenuti.
Počećemo navođenjem početka i kraja funkcije:
ButtonSubmit:Return
Da biste „zgrabili“ sve vrednosti iz GUI-ja, dodajte sledeće ispod linije ButtonSubmit:
Gui Submit, nohide
Sledeći red kreira novu promenljivu pod nazivom „WhisperFlags“. Zatim joj dodaje sve promenljive iz GUI-ja kao opcije za Whisper komandu.
WhisperFlags = --initial_prompt "%PromptText%" --task %TaskType% --model %SelectedModel% --language %SelectedLanguage% --output_format %OutputFormat% -o "%SelectedFolder%" "%SelectedFile%"
Zatim ćemo „reći“ AHK-u da koristi podrazumevani terminal (CMD.exe) za pokretanje Whisperovog izvršnog fajla (koji smo definisali pomoću promenljive WhisperExecutable) sa promenljivama iz GUI-ja (koje su sada „sastavljene“ u jednu promenljivu, WhisperFlags).
RunWait, cmd.exe /c %WhisperExecutable% %WhisperFlags%
Za lakše rešavanje problema dodali smo msgbox, kao i ranije, ali i sledeći red:
Clipboard = %WhisperExecutable% %WhisperFlags%
Ovo će kopirati u međuspremnik celu komandu koju je izdao CMD. Dakle, ako nešto ne uspe, umesto da vidite komandu samo u jednom od okvira za poruke AHK-a, ona će vam biti dostupna i u međuspremniku.
Otvorite terminal, nalepite komandu iz međuspremnika i proverite greške da biste lakše pronašli potencijalne probleme.
Na primer, dok sam radio na skripti, u početku sam zaboravio da stavim upit pod navodnike. Dakle, komanda nije uspela, jer je Whisper pokušao da parsira upit kao opcije.
Testiranje i završna podešavanja
To je to – upravo smo kreirali aplikaciju za transkripciju koristeći AutoHotkey-jeve mogućnosti za izradu GUI-ja i rešenje za AI transkripciju koje je spremno za korišćenje.
Pokušajte da pokrenete skriptu (dvostrukim klikom na njenu datoteku) i trebalo bi da vidite svoj GUI na ekranu.
- Promenite podešavanja Whispera koristeći padajuće liste na vrhu.
- Unesite kratak opis vaše transkripcije (i neke termine) u polje za upit.
- Kliknite na dugme Učitaj datoteku i izaberite audio datoteku koju želite da transkribujete.
- Kliknite na dugme Izaberi izlazni folder i odaberite gde da se sačuva generisana tekstualna datoteka.
- Kliknite na OK da pokrenete Whisper, onako kako ste ga konfigurisali putem GUI-ja, na odabranoj audio datoteci i sačuvajte njenu transkripciju kao tekstualnu datoteku u odabranoj fascikli.
Ako je sve funkcionisalo, vratite se na skriptu i ili obrišite ili komentarišite (dodavanjem „;“ na početak reda) sve funkcije za rešavanje problema (okvire za poruke i linije za kopiranje u međuspremnik).
Dalja primena Whispera uz pomoć AutoHotkey-a
Pravilnim podešavanjem podrazumevanih vrednosti vašeg GUI-ja, i eventualnim dodavanjem generičkog upita, možete pretvoriti Whisper u rešenje sa tri klika za transkripciju: bez plaćanja za komercijalna rešenja, usluga trećih strana, petljanja sa komplikovanim interfejsima, ili kucanja u terminalu.