Як створити власну програму транскрипції Windows за допомогою Whisper і AutoHotkey

Whisper від OpenAI — одне з найпотужніших рішень для перетворення вашого голосу на текст. Проте використання Whisper також може дратувати, оскільки вам потрібно вводити команди, щоб транскрибувати аудіофайл у текст. Але навіщо це робити, якщо у нас є AutoHotkey?

За допомогою AutoHotkey ми можемо легко створити базовий графічний інтерфейс для програм командного рядка, таких як Whisper. Отже, давайте зробимо це та подивимося, як ви можете створити власну програму для транскрипції, поєднавши надздібності створення графічного інтерфейсу AutoHotkey з Whisper OpenAI як «мозком» за кнопками.

Закладання основ для Whisper і AutoHotkey

За допомогою AutoHotkey можна створювати круті сценарії, але це ще не все, що він може. Для цього проекту ми використаємо AutoHotkey для створення графічного інтерфейсу користувача для Whisper. Це дозволить нам використовувати інструмент штучного інтелекту розпізнавання голосу OpenAI, натискаючи кнопки та налаштовуючи його функції за допомогою меню замість введення команд.

Однак це означає, що вам потрібно буде встановити як AutoHotkey, так і Whisper, щоб слідувати.

Для першої частини рівняння ви можете завантажте AutoHotkey з офіційного сайтупотім запустіть його інсталятор і виконайте наведені кроки.

Зауважте, що ми використовуватимемо старішу версію мови сценаріїв «v1», а не нову v2. Це важливо, оскільки обидві версії використовують дещо різний синтаксис. Те, що ми побачимо тут, може не працювати, якщо використовувати нову v2.

Друга частина складніша, але ви можете дізнатися, як це зробити, переглянувши нашу статтю про те, як перетворити ваш голос на текст за допомогою Whisper для Windows від OpenAI.

Коли обидва встановлені, наш план дій такий:

  • Створіть графічний інтерфейс користувача з елементами для змінних і значень Whisper.
  • Створюйте функції для отримання значень з інтерфейсу, вибору файлів і папок і збирання всього в корисну команду Whisper.
  • Виконайте команду Whisper, щоб отримати результати.
  • Звичайно, ви завжди можете використовувати вбудовану підтримку Windows для голосового введення, як ми бачили в нашій статті про те, як запустити голосовий набір у Windows 11. Однак, як ви побачите під час використання, Whisper набагато точніший (але також повільніше).

    З більш особистого боку я повинен пояснити, що я не програміст, і цей проект є «реміксом» рішення, створеного для особистого використання.

    Як створити новий сценарій AutoHotkey

    Першим кроком є ​​створення нового порожнього файлу сценарію. Зберігайте його у власній папці, на той випадок, якщо ви вирішите налаштувати чи створити на ньому нові файли.

  • Запустіть свій улюблений файловий менеджер (або натисніть клавішу Windows + E, щоб запустити Провідник Windows) і створіть папку для своєї програми для транскрипції будь-де.
  • Клацніть правою кнопкою миші на пустому місці вікна та виберіть «Створити» > «Сценарій AutoHotkey», щоб створити порожній файл сценарію.
  • Shift + клацніть файл правою кнопкою миші, щоб відкрити повне контекстне меню та виберіть, щоб відкрити його за допомогою улюбленого коду чи текстового редактора. Підійде власний блокнот Windows.
  • Незважаючи на те, що ваш файл AHK є «порожнім сценарієм», він уже буде попередньо заповнений деякими «речами». Це корисні змінні та прапорці AutoHotkey, які визначають, як він має працювати на вашому робочому столі. Ігноруйте їх, залиште їх такими, як вони є, і вводьте текст під ними.
  •   Як Windows 10 «Скидання цього ПК» стала потужнішою

    Знайомство з прапорами Шепоту

    Оскільки ми створюємо графічний інтерфейс для програми командного рядка, зручно мати посилання на її основні змінні та прапорці, які ми будемо використовувати в нашому проекті. Ви можете перевірити їх, прочитавши документацію Whisper, відвідавши свою офіційну сторінку Githubі запустіть його у своєму терміналі.

    Для зручності ми перерахуємо ті, які будемо використовувати в цьому проекті. Ми пропонуємо вам додати їх до свого сценарію як коментарі (в окремих рядках, кожен із яких починається символом «;», після якого йде пробіл).

     ; Whisper Flags:;  

    Створення GUI за допомогою AutoHotkey

    Ми пропонуємо вам розділити свій сценарій на розділи, використовуючи коментарі, як це зробили ми, щоб упорядкувати його. Ми почнемо з визначення деяких змінних, продовжимо до фактичного GUI і закінчимо визначенням його функцій.

    Встановлення прихованих змінних

    Ми починаємо з розділу, де ми визначимо змінні, які ми можемо захотіти змінити в майбутньому, але не так часто, щоб нам хотілося показувати їх через GUI, надто ускладнюючи його. Ви можете ввести «Variable_Name = Content or value of the variable» з однією парою змінної та значення на рядок.

    Для цього проекту ми визначили змінну OutputFormat, якій присвоїли значення «txt», і змінну WhisperExecutable, яка вказує назву виконуваного файлу Whisper. Таким чином, якщо ми захочемо використовувати те саме рішення в майбутньому для створення файлів субтитрів SRT замість документів TXT або оновити Whisper/перейти на альтернативну програму, ми зможемо налаштувати значення цих змінних у цьому місці, а не в усьому сценарії .

     OutputFormat = txtWhisperExecutable = whisper 

    Налаштування параметрів користувача

    Під час використання Whisper у командному рядку три його прапорці дозволяють визначити:

    • Якщо ви робите переклад або транскрипцію
    • Мова аудіофайлу
    • Мовна модель, яку ви бажаєте використовувати (доступні різні розміри, кожен з яких впливає на продуктивність і якість результатів).

    Найпростіший спосіб запропонувати таку саму функціональність за допомогою графічного інтерфейсу користувача — за допомогою перевірених спадних списків. Синтаксис додавання розкривного списку до графічного інтерфейсу користувача AutoHotkey такий:

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

    Виходячи з цього, давайте додамо три розкривні списки до нашого сценарію для вибору мови Whisper (між англійською/en та грецькою/el), моделі (маленький, базовий, малий, середній, великий) і типу завдання (транскрибувати або перекладати) .

     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|

    Щоб установити параметр як вибір за замовчуванням, використовуйте символ подвійної риски («|») після нього. Ви бачите, що в нашому прикладі ми встановили мову en, SelectedModel — small, а TaskType — транскрибування.

    Як керувати Шепітом

    Оскільки Whisper базується на штучному інтелекті, немає можливості мати абсолютний контроль над тим, як Whisper транскрибує аудіо. Він вільний вибирати те, що вважає оптимальним.

    Однак, як і інші рішення ШІ, Whisper може приймати підказки користувача. Створивши підказку, ви можете «керувати» тим, як воно транскрибує ваше аудіо.

      Як усунути проблеми з мережевим підключенням у Windows 10

    Чи рішення, яке ми створюємо, не змогло щось правильно транскрибувати? Ви можете спробувати «пояснити» Whisper, «про що йдеться в голосовому файлі», включаючи синтаксис слів, акронімів і фраз у вашій підказці, як ви хочете, щоб вони з’явилися в транскрипції. Для цього ми додамо поле редагування тексту AutoHotkey.

    Синтаксис не надто відрізняється від того, який ми використовували для додавання розкривних списків вище:

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

    «%PromptText%» у кінці «вказує» AHK показати вміст змінної PromptText (якщо їй уже призначено значення) у текстовому полі. Він нічого не відображатиме в сценарії, який ми створюємо, але вважайте це заповнювачем, коли ви врешті-решт налаштуєте сценарій у майбутньому, щоб також зберігати та завантажувати підказки!

    Чи бажаєте ви призначити попередньо визначене значення змінній PromptText? Додайте щось подібне до розділу змінних сценарію. Не забудьте замінити «Ваше ім’я» на своє справжнє ім’я.

     PromptText = Transcription of Your Name's notes 

    Налаштування кнопок дій

    Для вибору файлів, папок і запуску Whisper після того, як ми все налаштували, краще використовувати кнопки. Ви можете додати кнопки до інтерфейсу, створеного AHK, використовуючи наступне:

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

    Зауважте, що на відміну від змінних в елементах графічного інтерфейсу, які починаються з літери «v», імена функцій починаються з «g» для «Перейти (до цього місця сценарію)».

    Одна кнопка інтерфейсу AHK також може вважатися «за замовчуванням», яка буде активована, якщо ви не клацнете будь-де в графічному інтерфейсі та не натиснете Enter. Це визначається додаванням «за замовчуванням» у розділі координат і функції, як ви помітите в нашій кнопці «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

    За допомогою вищесказаного ми визначаємо три кнопки:

    • Один із позначкою «Завантажити файл», коли клацнути який запускає функцію SelectFile.
    • Один із позначкою «Вибрати вихідну папку», який запускатиме функцію SelectFolder.
    • Один із позначкою «OK», вибраний за замовчуванням, «викликає» функцію ButtonSubmit.

    Як показати свій GUI

    Наш графічний інтерфейс готовий, але не з’явиться на нашому екрані, оскільки ми не «сказали» AutoHotkey показувати його або що має робити кожна кнопка.

    Для цього додайте наступні два рядки нижче тих, які визначають ваш GUI:

     Gui, ShowReturn 

    Перший рядок «вказує» AHK показати вікно GUI, а другий позначає кінець розділу.

    Функції та функціональність нашого додатка

    Незважаючи на те, що ми завершили розділ GUI, якщо ви спробуєте запустити сценарій, він вийде з ладу. Це тому, що в ньому ми посилаємося на неіснуючі функції. Отже, нашим наступним кроком є ​​створення цих функцій.

    Нам потрібні три функції:

    • Виберіть вхідний файл.
    • Виберіть вихідну папку, де зберігатиметься транскрибований файл.
    • Створіть команду, яка буде «збирати» всі змінні в придатну для використання команду Whisper, подібну до того, що ми вводимо самі в терміналі, а потім запустіть її.

    Вибір вхідного файлу

    Перша функція, яку ми вже назвали «SelectFile», коли додали її кнопку до GUI, це:

     SelectFile:FileSelectFile, SelectedFileReturn 

    FileSelectFile — це функція AutoHotkey, яка відображає типовий запитувач файлів, дозволяючи користувачеві вибрати файл. SelectedFile — це змінна в нашому сценарії, яка «зберігає» шлях до вибраного користувачем файлу.

      Згадуючи Windows 2000, забутий шедевр Microsoft

    Однак, як ви побачите на наших скріншотах, ми також додали такий рядок безпосередньо над «поверненням» закінчення функції:

     MsgBox, %SelectedFile% 

    Це змусить AHK показати вікно повідомлень із вибраним файлом після того, як ми виберемо його, що корисно під час усунення несправностей у вашому сценарії. Якщо в цьому вікні повідомлення відображається шлях і ім’я вибраного файлу, це не кнопка вибору файлу чи функція, яка потребує виправлення.

    Вибір вихідної папки

    Функція для вибору папки майже ідентична, змінюється лише назва команди та змінна, щоб показати, що ми маємо справу з папками, а не з файлами:

     SelectFolder:FileSelectFolder, SelectedFolderMsgBox, %SelectedFolder%Return 

    Остаточна функція

    Остаточна функція буде найскладнішою. При зіставленні з кнопкою OK, це «збере» всі значення змінних із графічного інтерфейсу користувача, перетворить їх у зручну команду, а потім запустить її.

    Ми починаємо з визначення початку та кінця функції:

     ButtonSubmit:Return 

    Щоб «захопити» всі значення GUI, додайте наступне під рядком ButtonSubmit:

     Gui Submit, nohide 

    Наступний рядок створює нову змінну під назвою «WhisperFlags». Потім він додає до нього всі змінні GUI як прапорці для команди Whisper.

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

    Далі ми «скажемо» AHK використовувати термінал за замовчуванням (CMD.exe) для запуску виконуваного файлу Whisper (який ми визначили за допомогою змінної WhisperExecutable) зі змінними графічного інтерфейсу користувача (які тепер «зібрані» в одній змінній WhisperFlags).

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

    Для ще простішого усунення несправностей ми також додали msgbox, як і раніше, але також додали такий рядок:

     Clipboard = %WhisperExecutable% %WhisperFlags% 

    Це скопіює в буфер обміну повну команду, надану CMD. Отже, якщо щось не вдається, замість того, щоб бачити команду лише в одному з вікон повідомлень AHK, ви також матимете її доступною в буфері обміну.

    Відкрийте термінал, вставте команду з буфера обміну та перевірте помилки, які з’являються, щоб знайти потенційні проблеми.

    Наприклад, під час роботи над сценарієм я спочатку забув взяти підказку в лапки. Таким чином, команда не вдалася, оскільки Whisper намагався проаналізувати підказку як прапорці.

    Тестування та остаточні налаштування

    Ось і все — ми щойно створили програму для транскрипції, використовуючи можливості створення графічного інтерфейсу AutoHotkey і готове до використання рішення для транскрипції AI.

    Спробуйте запустити свій сценарій (двічі клацніть його файл), і ви побачите свій GUI на екрані.

    • Змініть параметри Whisper за допомогою розкривних списків угорі.
    • Введіть короткий опис вашої транскрипції (і деяких термінів) у полі підказки.
    • Натисніть кнопку «Завантажити файл» і виберіть аудіофайл, який потрібно транскрибувати.
    • Натисніть кнопку «Вибрати вихідну папку» та виберіть, де зберігати створений текстовий файл.
    • Натисніть «ОК», щоб запустити Whisper, як налаштовано вашим графічним інтерфейсом користувача, для вибраного аудіофайлу та зберегти його транскрипцію як текстовий файл у вибраній папці.

    Якщо все спрацювало, поверніться до свого сценарію та видаліть або закоментуйте (додавши «;» на початку) усі функції усунення несправностей (вікна повідомлень і рядки копіювання в буфер обміну).

    Розвиваючи Whisper з AutoHotkey

    Правильно встановивши значення за замовчуванням для графічного інтерфейсу користувача та, можливо, додавши загальну підказку, ви можете перетворити Whisper на рішення для транскрибування, яке включає три кліки: не потрібно платити за комерційні рішення, послуги сторонніх розробників, возитися зі складними інтерфейсами чи вводити текст термінал.