Whisper от OpenAI — одно из самых мощных решений для преобразования вашего голоса в текст. Однако использование Whisper также может вызывать раздражение, поскольку вам приходится вводить команды для транскрибирования аудиофайла в текст. Но зачем это делать, когда у нас есть AutoHotkey?

С помощью AutoHotkey мы можем без особых усилий создать базовый графический интерфейс для приложений командной строки, таких как Whisper. Итак, давайте сделаем это и посмотрим, как вы можете создать свое собственное приложение для транскрипции, объединив сверхспособности AutoHotkey для создания графического интерфейса пользователя с Whisper от OpenAI в качестве «мозга» за кнопками.

Закладываем основы для Whisper и AutoHotkey

Вы можете создавать классные скрипты с помощью AutoHotkey, но это не все, что оно может сделать. В этом проекте мы будем использовать AutoHotkey для создания графического интерфейса для Whisper. Это позволит нам использовать инструмент искусственного интеллекта для распознавания голоса OpenAI, нажимая кнопки и настраивая его функциональность с помощью меню вместо ввода команд.

Однако это означает, что для продолжения работы вам потребуется установить как AutoHotkey, так и Whisper.

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

Обратите внимание, что мы будем использовать старую версию языка сценариев «v1», а не новую версию v2. Это важно, потому что две версии используют несколько иной синтаксис. То, что мы увидим здесь, может не сработать при использовании новой версии v2.

Вторая часть сложнее, но вы можете узнать, как это сделать, прочитав нашу статью о том, как преобразовать свой голос в текст с помощью Whisper от OpenAI для Windows.

После установки обоих приложений наш план действий следующий:

  1. Создайте графический интерфейс с элементами для переменных и значений Whisper.
  2. Создайте функции для извлечения значений из интерфейса, выбора файлов и папок и сведите все в удобную команду Whisper.
  3. Запустите команду Whisper для получения результатов.

Конечно, вы всегда можете воспользоваться встроенной поддержкой голосового набора в Windows, как мы видели в нашей статье о том, как начать голосовой набор в Windows 11. Тем не менее, как вы увидите при его использовании, Whisper намного точнее (но и медленнее).

В более личном плане я должен объяснить, что я не программист, и этот проект является «ремиксом» решения, созданного для личного использования.

Как создать новый скрипт AutoHotkey

Первый шаг — создать новый пустой файл скрипта. Сохраните его в отдельной папке на случай, если вы решите доработать или дополнить его, создав дополнительные файлы.

  1. Запустите ваш любимый файловый менеджер (или нажмите клавишу Windows E, чтобы запустить проводник Windows) и создайте папку для вашего приложения для транскрипции в любом удобном месте.
    Создание папки проекта
  2. Щелкните правой кнопкой мыши на пустом месте окна и выберите Создать > Сценарий AutoHotkey, чтобы создать пустой файл сценария.
    Щелкните правой кнопкой мыши Новый скрипт Autohotkey
  3. Shift + Щелкните правой кнопкой мыши по файлу, чтобы получить доступ к полному контекстному меню, и выберите, чтобы открыть его с помощью вашего любимого кода или текстового редактора. Подойдет собственный блокнот для Windows.
    Shift Щелкните правой кнопкой мыши Открыть с помощью редактора
  4. Несмотря на то, что это «пустой скрипт», ваш AHK-файл уже будет предварительно заполнен некоторыми «материалами». Это полезные переменные и флаги AutoHotkey, которые определяют, как он должен работать на вашем рабочем столе. Игнорируйте их, оставьте как есть и в дальнейшем вводите текст под ними.
    Пустой скрипт Autohotkey В Vs Code

Знакомство с флагами Whisper

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

Whisper Flags Примечание В скрипте

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

; Whisper Flags:; --initial_prompt PROMPT_TEXT; --output_format txt; -o OUTPUT_FOLDER; --model MODEL_TO_USE; --task TRANSCRIBE/TRANSLATE; --language EN/EL

Создание графического интерфейса с помощью AutoHotkey

Мы предлагаем вам разделить ваш скрипт на разделы, используя комментарии, как это сделали мы, чтобы сохранить его организованным. Мы начнем с определения некоторых переменных, перейдем к собственно графическому интерфейсу и закончим определением его функций.

Установка скрытых переменных

Мы начнем с раздела, где мы определим переменные, которые, возможно, захотим изменять в будущем, но не так часто, чтобы мы хотели предоставлять их через графический интерфейс, чрезмерно усложняя его. Вы можете ввести «Имя_переменной = Содержимое или значение переменной» с одной парой переменных и значений в строке.

Для этого проекта мы определили переменную 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 — значение transcribe.

Определение раскрывающихся списков графического интерфейса пользователя

Как управлять Whisper

Поскольку Whisper основан на искусственном интеллекте, невозможно получить абсолютный контроль над тем, как Whisper транскрибирует аудио. Вы вольны выбирать то, что считаете оптимальным.

Однако, как и другие решения с искусственным интеллектом, Whisper может принимать запросы пользователя. Создавая приглашение, вы можете «направлять», как оно транскрибирует ваш звук.

В предлагаемом нами решении что-то неправильно транскрибировалось? Вы можете попробовать «объяснить» 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. Это определяется добавлением «по умолчанию» в разделе координат и функций, как вы заметите на нашей кнопке «ОК»:

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.

Как отобразить ваш графический интерфейс

Наш графический интерфейс готов, но он не появится на нашем экране, потому что мы не «сказали» AutoHotkey показать его или что должна делать каждая кнопка.

Графический интерфейс Autohotkey Отображает и возвращает результат

Для этого добавьте следующие две строки под теми, которые определяют ваш графический интерфейс:

Gui, ShowReturn

Первая строка «сообщает» AHK показать окно графического интерфейса, в то время как вторая отмечает конец раздела.

Функции нашего приложения

Хотя мы завершили раздел с графическим интерфейсом, при попытке запустить скрипт произойдет сбой. Это потому, что в нем мы ссылаемся на несуществующие функции. Итак, наш следующий шаг — создать эти функции.

Выделены функции кнопок

Нам нужны следующие три функции:

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

Выбор входного файла

Первая функция, которую мы уже назвали «selectFile«, когда мы добавили ее кнопку в графический интерфейс, это:

SelectFile:FileSelectFile, SelectedFileReturn
Добавление окна с сообщением об устранении неполадок для выбора файла

FileSelectFile — это функция автозапуска, которая отображает типичное средство запроса файла, позволяя пользователю выбрать файл. selectedFile — это переменная в нашем скрипте, которая будет «хранить» путь к файлу, выбранному пользователем.

Однако, как вы увидите на наших скриншотах, мы также добавили следующую строку прямо над функцией, заканчивающуюся словом «return».:

MsgBox, %SelectedFile%

После того, как мы его выберем, AHK покажет окно сообщения с выбранным файлом, что полезно при устранении неполадок в вашем скрипте. Если в этом окне сообщения отображается путь и имя выбранного файла, это не кнопка или функция выбора файла, которая требует исправления.

Выбор выходной папки

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

SelectFolder:FileSelectFolder, SelectedFolderMsgBox, %SelectedFolder%Return
Функция выбора папки

Заключительная функция

Последняя функция будет самой сложной. Сопоставленная с кнопкой OK, она «соберет» все значения переменных из графического интерфейса, преобразует их в удобную команду и затем запустит ее.

Мы начнем с указания начала и конца функции:

ButtonSubmit:Return
Кнопка Отправить пустую функцию

Чтобы «захватить» все значения графического интерфейса, добавьте следующее под строкой ButtonSubmit:

Gui Submit, nohide
Кнопка отправки с графическим интерфейсом Submit

В следующей строке создается новая переменная с именем «WhisperFlags«. Затем к ней добавляются все переменные графического интерфейса в качестве флагов для команды Whisper.

WhisperFlags = --initial_prompt "%PromptText%" --task %TaskType% --model %SelectedModel% --language %SelectedLanguage% --output_format %OutputFormat% -o "%SelectedFolder%" "%SelectedFile%"
Кнопка отправки, собирающая флаги Whisper

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

RunWait, cmd.exe /c %WhisperExecutable% %WhisperFlags%
Кнопка Submit Runwait Whisperexecutable и флажок

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

Clipboard = %WhisperExecutable% %WhisperFlags%

При этом в буфер обмена будет скопирована полная команда, выданная CMD. Таким образом, в случае сбоя вы увидите команду не только в одном из окон сообщений AHK, но и в своем буфере обмена.

Кнопка Отправить для устранения неполадок Скопировать команду в буфер обмена

Откройте терминал, вставьте команду из буфера обмена и проверьте всплывающие сообщения об ошибках, чтобы найти потенциальные проблемы.

Проверка команды в Cmd

Например, работая над скриптом, я изначально забыл заключить приглашение в кавычки. Таким образом, команда завершилась неудачно, поскольку Whisper попытался проанализировать приглашение в виде флагов.

Тестирование и окончательные настройки

Вот и все — мы только что создали приложение для транскрипции, используя возможности AutoHotkey по созданию графического интерфейса пользователя и готовое к использованию решение для транскрипции с использованием искусственного интеллекта.

Попробуйте запустить свой скрипт (дважды щелкните его файл), и вы должны увидеть свой графический интерфейс на экране.

  • Измените настройки Whisper, используя раскрывающиеся списки вверху.
  • Введите краткое описание вашей транскрипции (и некоторые термины) в поле Приглашение.
  • Нажмите кнопку Загрузить файл и выберите аудиофайл, который вы хотите транскрибировать.
  • Нажмите кнопку Выбрать папку вывода и выберите, где должен быть сохранен созданный текстовый файл.
  • Нажмите OK, чтобы запустить Whisper, как настроено вашим графическим интерфейсом, для выбранного аудиофайла и сохранить его транскрипцию в виде текстового файла в выбранной вами папке.

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

Расширяем возможности Whisper с помощью AutoHotkey

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