2023-07-29 15:25 Doba čtení: 18 min

Jak si vytvořit vlastní aplikaci pro přepis Windows pomocí Whisper a AutoHotkey

Whisper od OpenAI představuje jedno z nejefektivnějších řešení pro transformaci hlasového projevu na textový formát. Nicméně, jeho použití může být poněkud zdlouhavé, protože vyžaduje zadávání příkazů pro přepis audio souborů. Proč se však obtěžovat s příkazy, když máme k dispozici AutoHotkey?

S pomocí AutoHotkey můžeme snadno vytvořit intuitivní grafické rozhraní (GUI) pro aplikace příkazového řádku, jako je Whisper. V následujícím textu si ukážeme, jak si můžete sestavit vlastní aplikaci pro přepis, která kombinuje schopnosti AutoHotkey pro tvorbu GUI s výkonem Whisper od OpenAI.

Základy pro Whisper a AutoHotkey

AutoHotkey je skvělý nástroj pro tvorbu skriptů, ale jeho možnosti tím nekončí. V tomto projektu jej využijeme k vytvoření grafického uživatelského rozhraní pro Whisper. To nám umožní používat AI nástroj od OpenAI pro rozpoznávání hlasu pomocí klikání na tlačítka a nastavování jeho funkčnosti pomocí menu, namísto ručního zadávání příkazů.

Před pokračováním se ale ujistěte, že máte nainstalované jak AutoHotkey, tak i samotný Whisper.

Pro první část si můžete stáhnout AutoHotkey z oficiálních stránek, následně spustit instalační program a postupovat dle pokynů.

Důležité je, že budeme používat starší verzi skriptovacího jazyka "v1", nikoli novou verzi v2. Obě verze se totiž liší v syntaxi. Skript, který si zde ukážeme, nebude s novou verzí v2 fungovat.

Druhá část, instalace Whisper, je o něco složitější. Postup najdete v našem dalším článku, jak převést hlas na text s Whisper pro Windows od OpenAI.

Jakmile máte obojí nainstalované, plán je následující:

  • Vytvořte GUI s prvky pro proměnné a hodnoty Whisperu.
  • Vytvořte funkce pro získání hodnot z rozhraní, výběr souborů a složek a sestavte vše do použitelného příkazu pro Whisper.
  • Spusťte příkaz Whisper pro získání výsledků.

Samozřejmě, můžete také použít vestavěnou podporu Windows pro hlasové psaní, kterou jsme probírali v našem článku o spuštění hlasového psaní ve Windows 11. Nicméně, jak si sami ověříte, Whisper je mnohem přesnější (i když pomalejší).

Osobně bych rád dodal, že nejsem programátor a tento projekt je spíše "remix" řešení, které jsem vytvořil pro vlastní potřebu.

Vytvoření nového skriptu AutoHotkey

Prvním krokem je vytvoření nového, prázdného souboru skriptu. Doporučuji jej umístit do samostatné složky, pokud byste ho v budoucnu chtěli vylepšovat a rozšiřovat.

  • Spusťte oblíbeného správce souborů (nebo stiskněte klávesu Windows + E pro spuštění Průzkumníka Windows) a vytvořte složku pro vaši aplikaci pro přepis.
  • Klikněte pravým tlačítkem myši na prázdné místo v okně složky a vyberte Nový > AutoHotkey Script pro vytvoření prázdného souboru skriptu.
  • Podržte Shift a klikněte pravým tlačítkem myši na soubor pro zobrazení rozšířené kontextové nabídky a vyberte možnost otevření v textovém editoru. Postačí i obyčejný Poznámkový blok od Windows.
  • I když se jedná o "prázdný skript", soubor AHK bude již obsahovat nějaký výchozí kód. Jedná se o užitečné proměnné a nastavení AutoHotkey, které definují, jak skript funguje na ploše. Nechte je beze změny a veškerý kód pište pod ně.

Seznámení s parametry Whisper

Protože vytváříme grafické rozhraní pro aplikaci příkazového řádku, je užitečné znát její hlavní parametry, které budeme v našem projektu používat. Projděte si dokumentaci Whisperu na oficiální stránce na Githubu, nebo si jej spusťte v terminálu.

Pro usnadnění si vypíšeme ty parametry, které použijeme v tomto projektu. Doporučuji je přidat do vašeho skriptu jako komentáře (na samostatné řádky, každý začínající znakem ";", za kterým následuje mezera).

 ; Parametry Whisper:;  

Vytvoření GUI pomocí AutoHotkey

Doporučuji rozdělit váš skript na sekce pomocí komentářů, jako jsme to udělali i my, pro lepší přehlednost. Začneme definicí některých proměnných, poté přejdeme k samotnému GUI a nakonec definujeme jeho funkce.

Definování skrytých proměnných

Začneme částí, kde definujeme proměnné, které chceme mít možnost v budoucnu změnit, ale nechceme je zobrazovat v GUI, aby to nebylo příliš komplikované. Zadejte "Název_proměnné = Obsah nebo hodnota proměnné", vždy jednu proměnnou a hodnotu na řádek.

V tomto projektu definujeme proměnnou OutputFormat, kterou nastavíme na hodnotu "txt" a proměnnou WhisperExecutable, která udává název spustitelného souboru Whisper. Pokud v budoucnu budeme chtít generovat soubory titulků SRT místo TXT, nebo chceme upgradovat Whisper, či přejít na alternativní aplikaci, můžeme jednoduše změnit hodnoty těchto proměnných na tomto jednom místě, namísto hledání po celém skriptu.

 OutputFormat = txtWhisperExecutable = whisper 

Nastavení uživatelských voleb

Při použití Whisper z příkazového řádku, tři parametry umožňují nastavit:

  • Zda se má provést překlad nebo přepis
  • Jazyk audio souboru
  • Jazykový model, který chcete použít (k dispozici jsou různé velikosti, které ovlivňují výkon a kvalitu výsledků).

Nejjednodušší způsob, jak nabídnout tyto volby v grafickém uživatelském rozhraní, je pomocí rozbalovacích seznamů. Syntaxe pro přidání rozbalovacího seznamu do GUI v AutoHotkey je následující:

 Gui, Add, DropDownList, xPozice yPozice šířka výška vProměnná_pro_uložení_výběru, možnostA|možnostB|výchozí_možnostC||možnostD| 

Podle tohoto vzoru přidáme do našeho skriptu tři rozbalovací seznamy pro výběr jazyka Whisperu (angličtina/en a řečtina/el), modelu (tiny, base, small, medium, large) a typu úlohy (přepis nebo překlad).

 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|

Pro nastavení možnosti jako výchozí, použijte za ní symbol dvojité svislé čáry ("||"). V našem příkladu jsme nastavili jazyk na en, SelectedModel na small a TaskType na transcribe.

Jak nasměrovat Whisper

Whisper, jakožto AI, nemá absolutní kontrolu nad tím, jak přepisuje zvuk. Je ponecháno na něm, co považuje za optimální.

Nicméně, stejně jako další AI řešení, Whisper může přijímat uživatelské nápovědy. Vytvořením nápovědy můžete "řídit" jeho chování.

Pokud se mu nepodaří něco přepsat správně, můžete Whisperu "vysvětlit", o čem je audio soubor, včetně syntaxe, zkratek a frází, a to tak, jak chcete, aby se objevily v přepisu. Pro tento účel přidáme textové pole v AutoHotkey.

Syntaxe se příliš neliší od syntaxe pro rozbalovací seznamy:

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

"%PromptText%" na konci "říká" AHK, aby v textovém poli zobrazil obsah proměnné PromptText (pokud je již přiřazena nějaká hodnota). V našem skriptu se zatím nic nezobrazí, ale považujte to za zástupný symbol pro případ, že budete v budoucnu skript upravovat, včetně ukládání a načítání nápověd!

Chcete raději přiřadit proměnné PromptText výchozí hodnotu? Přidejte do části s proměnnými skriptu něco jako následující. Nezapomeňte nahradit "Vaše jméno" vaším skutečným jménem.

 PromptText = Přepis poznámek uživatele Vaše jméno 

Nastavení akčních tlačítek

Pro výběr souborů, složek a spuštění Whisperu po nastavení všech parametrů, je nejlepší použít tlačítka. Tlačítka se do GUI vytvořeného pomocí AHK přidávají takto:

 Gui, Add, Button, xPozice yPozice šířka výška gFunkce_ke_spuštění, Text_tlačítka 

Na rozdíl od proměnných v prvcích GUI, které začínají písmenem "v", názvy funkcí začínají písmenem "g", což znamená "Přejít (na toto místo ve skriptu)".

Jedno tlačítko v GUI AHK může být také "výchozí", které se aktivuje, pokud nekliknete na žádný prvek GUI a stisknete Enter. To se definuje přidáním "default" do sekce souřadnic a funkcí, jak si můžete všimnout u našeho tlačítka "OK":

 Gui, Add, Button, x5 w505 h50 gSelectFile, Načíst souborGui, Add, Button, x5 w505 h50 gSelectFolder, Zvolit výstupní složku
​​​​​​​Gui, Add, Button, Default x5 w505 h50 gButtonSubmit, OK

Výše uvedeným definujeme tři tlačítka:

  • Tlačítko s popiskem "Načíst soubor", které po kliknutí spustí funkci SelectFile.
  • Tlačítko s popiskem "Zvolit výstupní složku", které spustí funkci SelectFolder.
  • Tlačítko s popiskem "OK", které je vybráno jako výchozí a "zavolá" funkci ButtonSubmit.

Jak zobrazit vaše GUI

Naše grafické uživatelské rozhraní je hotové, ale neobjeví se na obrazovce, protože jsme "neřekli" AutoHotkey, aby ho zobrazil, a také jsme neřekli, co má každé tlačítko dělat.

Za tímto účelem přidejte následující dva řádky pod řádky, které definují vaše GUI:

 Gui, ShowReturn 

První řádek "říká" AHK, aby zobrazil okno GUI, a druhý označuje konec sekce.

Funkce a funkčnost naší aplikace

I když jsme dokončili sekci GUI, pokud se pokusíte spustit skript, dojde k jeho chybě. Je to proto, že odkazujeme na neexistující funkce. Naším dalším krokem je tedy vytvoření těchto funkcí.

Tři funkce, které chceme, jsou:

  • Výběr vstupního souboru.
  • Výběr výstupní složky, kam bude uložen přepsaný soubor.
  • Vytvoření příkazu, který "sestaví" všechny proměnné do použitelného příkazu Whisper, podobného tomu, který bychom sami napsali v terminálu, a následně ho spustí.

Výběr vstupního souboru

První funkce, kterou jsme pojmenovali "SelectFile" při přidávání tlačítka do GUI, je:

 SelectFile:FileSelectFile, SelectedFileReturn 

FileSelectFile je funkce AutoHotkey, která zobrazí standardní dialog pro výběr souboru. SelectedFile je proměnná v našem skriptu, která "uchovává" cestu k souboru, který uživatel vybral.

Nicméně, jak si můžete všimnout na našich screenshotech, přidali jsme také následující řádek přímo nad "return", který funkci ukončuje:

 MsgBox, %SelectedFile% 

Tím AutoHotkey zobrazí okno se zprávou s vybraným souborem po jeho výběru. To je užitečné při odstraňování potíží se skriptem. Pokud toto okno se zprávou zobrazí cestu a název vybraného souboru, pak tlačítko a funkce pro výběr souboru fungují správně a problém je jinde.

Výběr výstupní složky

Funkce pro výběr složky je téměř identická, liší se pouze názvem příkazu a proměnnou, aby bylo jasné, že se jedná o složky, nikoli soubory:

 SelectFolder:FileSelectFolder, SelectedFolderMsgBox, %SelectedFolder%Return 

Konečná funkce

Konečná funkce bude nejsložitější. Je přiřazena tlačítku OK a jejím úkolem je "sebrat" všechny hodnoty proměnných z GUI, převést je na použitelný příkaz a ten následně spustit.

Začneme uvedením začátku a konce funkce:

 ButtonSubmit:Return 

Pro "zachycení" všech hodnot z GUI, přidejte do řádku ButtonSubmit následující:

 Gui Submit, nohide 

Následující řádek vytvoří novou proměnnou s názvem "WhisperFlags". Poté do ní přidá všechny proměnné GUI jako parametry pro příkaz Whisper.

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

Dále "řekneme" AHK, aby použila výchozí terminál (CMD.exe) pro spuštění spustitelného souboru Whisper (který jsme definovali pomocí proměnné WhisperExecutable) s parametry z GUI (které jsou nyní "sestaveny" do jedné proměnné WhisperFlags).

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

Pro usnadnění řešení případných problémů jsme opět přidali msgbox, jako předtím, ale přidali jsme i následující řádek:

 Clipboard = %WhisperExecutable% %WhisperFlags% 

Tím se zkopíruje do schránky kompletní příkaz, který se má spustit v CMD. Pokud tedy něco selže, místo abyste viděli příkaz jen v jedné ze zpráv AHK, budete ho mít i ve schránce.

Otevřete terminál, vložte příkaz ze schránky a zkontrolujte chyby, které se objeví, abyste našli případné problémy.

Například, při vývoji skriptu, jsem zpočátku zapomněl uzavřít nápovědu do uvozovek. Příkaz tak selhal, protože se Whisper snažil nápovědu analyzovat jako parametry.

Testování a finální úpravy

To je vše – právě jsme vytvořili aplikaci pro přepis, která kombinuje možnosti grafického uživatelského rozhraní AutoHotkey s řešením pro přepis pomocí umělé inteligence.

Zkuste spustit skript (dvojitým kliknutím na jeho soubor) a na obrazovce by se mělo zobrazit vaše GUI.

  • Změňte nastavení Whisperu pomocí rozbalovacích seznamů v horní části.
  • Do pole Nápověda napište krátký popis vašeho přepisu (a některá slova).
  • Klikněte na tlačítko Načíst soubor a vyberte audio soubor, který chcete přepsat.
  • Klikněte na tlačítko Zvolit výstupní složku a vyberte místo, kam chcete textový soubor uložit.
  • Kliknutím na OK spustíte Whisper s parametry, které jste nastavili v GUI, pro vybraný audio soubor, a jeho přepis se uloží jako textový soubor do zvolené složky.

Pokud vše funguje, vraťte se ke svému skriptu a buď odstraňte, nebo zakomentujte (přidáním "; na začátek) všechny funkce pro odstraňování problémů (zprávy a řádky pro kopírování do schránky).

Pokračování s Whisper a AutoHotkey

Správným nastavením výchozích hodnot ve vašem GUI a případně přidáním obecné nápovědy můžete přeměnit Whisper na řešení pro přepis na tři kliknutí: bez placení za komerční řešení, služby třetích stran, složitá rozhraní nebo psaní příkazů do terminálu.

Tomáš Dvořák
Autor
Czechia

Píše o bezpečnosti, webu a chytrých službách s důrazem na srozumitelnost.

Předchozí článek
Jak soukromá a bezpečná je síť Tor?
Další článek
Co jsou spánkové chronotypy a jak je můžete najít?