Fazer um aplicativo de transcrição de três cliques para usar, mas altamente preciso, parece difícil, mas não é. Vamos apresentar o Whisper ao AutoHotkey.

O Whisper da OpenAI é uma das soluções mais poderosas para transformar sua voz em texto. No entanto, Whisper também pode ser chato de usar, já que você precisa digitar comandos para transcrever um arquivo de áudio em texto. Mas por que fazer isso quando temos o AutoHotkey?

Com o AutoHotkey, podemos criar sem esforço uma GUI básica para aplicativos de linha de comando como o Whisper. Então, vamos fazer isso e ver como você pode criar seu próprio aplicativo de transcrição combinando os superpoderes de criação de GUI do AutoHotkey com o Whisper do OpenAI como o "cérebro" por trás dos botões.

Lançando as bases para Whisper e AutoHotkey

Você pode criar scripts legais com o AutoHotkey, mas isso não é tudo que ele pode fazer. Para este projeto, usaremos o AutoHotkey para criar uma GUI para o Whisper. Isso nos permitirá usar a ferramenta AI de reconhecimento de voz do OpenAI clicando em botões e personalizando sua funcionalidade usando menus em vez de digitar comandos.

No entanto, isso significa que você precisará ter o AutoHotkey e o Whisper instalados para acompanhar.

Para a primeira parte da equação, você pode baixe o AutoHotkey de seu site oficial, execute seu instalador e siga as etapas apresentadas.

Observe que usaremos a versão "v1" mais antiga da linguagem de script, não a nova v2. Isso é importante porque as duas versões usam uma sintaxe um tanto diferente. O que veremos aqui pode não funcionar se usar a nova versão v2.

A segunda parte é mais complicada, mas você pode aprender como fazer conferindo nosso artigo sobre como transformar sua voz em texto com o Whisper da OpenAI para Windows.

Com ambos instalados, nosso plano de ação é o seguinte:

  1. Crie uma GUI com elementos para as variáveis ​​e valores do Whisper.
  2. Crie funções para obter valores da interface, selecione arquivos e pastas e monte tudo em um comando Whisper utilizável.
  3. Execute o comando Whisper para produzir resultados.

Claro, você sempre pode usar o suporte interno do Windows para digitação por voz, como vimos em nosso artigo sobre como iniciar a digitação por voz no Windows 11. Ainda assim, como você verá ao usá-lo, o Whisper é muito mais preciso (mas também mais lento).

Em uma nota mais pessoal, devo explicar que não sou programador, e este projeto é um "remix" de uma solução feita para uso pessoal.

Como fazer um novo script AutoHotkey

A primeira etapa é criar um novo arquivo de script em branco. Mantenha-o em sua própria pasta, caso decida ajustá-lo ou construí-lo, criando mais arquivos.

  1. Execute seu gerenciador de arquivos favorito (ou pressione Chave do Windows + E para iniciar o Windows Explorer) e crie uma pasta para seu aplicativo de transcrição em qualquer lugar que desejar.
  2. Clique com o botão direito do mouse em um ponto vazio da janela e selecione Novo > Script AutoHotkey para criar um arquivo de script vazio.
  3. Shift + Clique com o botão direito no arquivo para acessar o menu de contexto completo e selecione para abri-lo com seu código ou editor de texto favorito. próprio do Windows Bloco de anotações vai fazer.
  4. Apesar de ser "um script vazio", seu arquivo AHK já estará pré-preenchido com algumas "coisas". Essas são variáveis ​​e sinalizadores úteis do AutoHotkey que definem como ele deve funcionar em sua área de trabalho. Ignore-os, deixe-os como estão e faça todas as suas futuras digitações abaixo deles.

Conhecendo as bandeiras de Whisper

Como estamos criando uma GUI para um aplicativo de linha de comando, é útil ter uma referência às principais variáveis ​​e sinalizadores que usaremos em nosso projeto. Você pode conferir lendo a documentação do Whisper, visitando sua página oficial do Github, e executá-lo em seu terminal.

Vamos listar aqueles que usaremos neste projeto por conveniência. Sugerimos que você os adicione ao seu script como comentários (em linhas separadas, cada uma começando com um caractere ";" seguido de um espaço).

; Sinalizadores de Sussurro:; --initial_prompt PROMPT_TEXT; --output_format txt; -o OUTPUT_FOLDER; --model MODEL_TO_USE; --task TRANSCREVER/TRADUZIR; --idioma EN/EL

Criando a GUI com AutoHotkey

Sugerimos que você divida seu script em seções usando comentários como fizemos para mantê-lo organizado. Começaremos definindo algumas variáveis, continuaremos com a GUI real e terminaremos definindo suas funções.

Começamos com uma seção onde definiremos as variáveis ​​que podemos querer alterar no futuro, mas não com tanta frequência que gostaríamos de expô-las por meio da GUI, complicando-a demais. Você pode digitar "Variable_Name = Conteúdo ou valor da variável" com uma variável e um par de valores por linha.

Para este projeto, definimos um Formato de saída variável que definimos para o "TXT"Valor e um WhisperExecutable variável declarando Nome do arquivo executável do Whisper. Dessa forma, se quisermos usar a mesma solução no futuro para criar arquivos de legenda SRT em vez de documentos TXT ou atualizar Sussurrando/mudar para um aplicativo alternativo, podemos ajustar os valores dessas variáveis ​​naquele único ponto em vez de ao longo do roteiro.

OutputFormat = txtWhisperExecutable = sussurro

Configurando as opções do usuário

Ao usar o Whisper na linha de comando, três de seus sinalizadores permitem definir:

  • Se você está fazendo tradução ou transcrição
  • O arquivo de áudio linguagem
  • O idioma modelo você deseja usar (vários tamanhos estão disponíveis, cada um afetando o desempenho VS a qualidade dos resultados).

A maneira mais fácil de oferecer a mesma funcionalidade por meio de uma GUI é por meio de listas suspensas testadas e comprovadas. A sintaxe para adicionar uma lista suspensa a uma GUI do AutoHotkey é a seguinte:

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

Com base nisso, vamos adicionar três listas suspensas ao nosso script para selecionar o idioma do Whisper (entre inglês/en e grego/el), modelo (minúsculo, básico, pequeno, médio, grande) e tipo de tarefa (transcrever ou traduzir).

Gui, Add, DropDownList, x5 y5 w165 h50 vSelectedLanguage, en||el
Gui, Add, DropDownList, x175 y5 w165 h100 vSelectedModel, tiny|base|small||medium|large|
Gui, Adicionar, DropDownList, x345 y5 w165 h100 vTaskType, transcrever||traduzir|

Para definir uma opção como a seleção padrão, use um símbolo de barra dupla ("|") depois dela. Você pode ver que, em nosso exemplo, definimos nosso idioma para pt, Modelo selecionado para pequenoe TaskType para transcrever.

Como Guiar o Sussurro

Como o Whisper é baseado em IA, não há como ter controle absoluto sobre como o Whisper transcreve o áudio. É livre para escolher o que considera ideal.

No entanto, como outras soluções de IA, o Whisper pode aceitar solicitações do usuário. Ao criar um prompt, você pode "guiar" como ele transcreve seu áudio.

A solução que estamos criando falhou ao transcrever algo corretamente? Você pode tentar "explicar" ao Whisper "sobre o que é o arquivo de voz", incluindo a sintaxe das palavras, acrônimos e frases em seu prompt, como deseja que apareçam na transcrição. Para isso, adicionaremos um campo AutoHotkey Text Edit.

A sintaxe não é muito diferente do que usamos para adicionar listas suspensas acima:

Gui, Adicionar, Editar, x5 w505 h400 vPromptText, %PromptText%

O "%PromptText%" no final "diz" ao AHK para mostrar o conteúdo da variável PromptText (se já tiver um valor atribuído) dentro do campo de texto. Ele não mostrará nada no script que estamos fazendo, mas considere-o um espaço reservado para quando você eventualmente ajustar o script no futuro também para salvar e carregar prompts!

Você prefere atribuir um valor predefinido ao PromptText variável? Adicione algo como o seguinte ao Variáveis seção do roteiro. Lembre-se de substituir "Seu nome" pelo seu nome real.

PromptText = Transcrição das anotações do seu nome

Configurando os botões de ação

Para escolher arquivos, pastas e executar o Whisper depois de configurar tudo, é melhor usar os botões. Você pode adicionar botões a uma interface criada pelo AHK usando o seguinte:

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

Observe que, diferentemente das variáveis ​​nos elementos da GUI, que começam com a letra "v", os nomes das funções começam com "g", para "Ir (para este local do script)".

Um único botão de uma interface AHK também pode ser considerado "o padrão", que será ativado se você não clicar em nenhum lugar da GUI e pressionar Digitar. Isso é definido adicionando "padrão" na seção de coordenadas e função, como você notará em nosso botão "OK":

Gui, Adicionar, Botão, x5 w505 h50 gSelectFile, Carregar FileGui, Adicionar, Button, x5 w505 h50 gSelectFolder, EscolherSaída Pasta
Gui, Adicionar, Botão, Padrão x5 w505 h50 gButtonSubmit, OK

Com o exposto, estamos definindo três botões:

  • Um rotulado "Carregar arquivo" que, ao ser clicado, executará o Selecione o arquivo função.
  • Um rotulado "Escolha a pasta de saída", que executará o Selecione a pasta função.
  • Um rotulado "OK", selecionado por padrão, "chamando" o BotãoEnviar função.

Como mostrar sua GUI

Nossa GUI está pronta, mas não aparecerá em nossa tela porque não "dissemos" ao AutoHotkey para mostrá-la ou o que cada botão deve fazer.

Para isso, adicione as duas linhas a seguir abaixo daquelas que definem sua GUI:

Gui, ShowReturn

A primeira linha "diz" ao AHK para mostrar a janela da GUI, enquanto a segunda marca o final da seção.

As funções e funcionalidades do nosso aplicativo

Embora tenhamos concluído a seção GUI, se você tentar executar o script, ele travará. Isso porque estamos referenciando funções inexistentes nele. Então, nosso próximo passo é criar essas funções.

As três funções que queremos são:

  • Selecione um arquivo de entrada.
  • Selecione a pasta de saída onde o arquivo transcrito será armazenado.
  • Crie um comando que "reúna" todas as variáveis ​​em um comando Whisper utilizável, semelhante ao que digitaríamos em um terminal e, em seguida, execute-o.

Seleção de arquivo de entrada

A primeira função, que já chamamos de "Selecione o arquivo" quando adicionamos seu botão à GUI, é:

Selecione o arquivo:FileSelectFile, SelectedFileReturn

ArquivoSelecionarArquivo é uma função AutoHotkey que exibe um solicitador de arquivo típico, permitindo que o usuário selecione um arquivo. Arquivo Selecionado é a variável em nosso script que irá "manter" o caminho para o arquivo que o usuário selecionou.

No entanto, como você verá em nossas capturas de tela, também adicionamos a seguinte linha logo acima do "retorno" que termina a função:

MsgBox, %SelectedFile%

Isso fará com que o AHK mostre um Caixa de mensagem com o arquivo selecionado depois de escolhê-lo, o que é útil ao solucionar problemas do seu script. Se esta caixa de mensagem mostrar o caminho e o nome do arquivo selecionado, não é o botão ou função de seleção de arquivo que requer correção.

Seleção da pasta de saída

A função para selecionar uma pasta é quase idêntica, mudando apenas o nome do comando e a variável, para mostrar que estamos lidando com pastas ao invés de arquivos:

SelectFolder: FileSelectFolder, SelectedFolderMsgBox, %SelectedFolder%Retornar

A última função

A função final será a mais complicada. Mapeado para o botão OK, isso irá "reunir" todos os valores variáveis ​​da GUI, transformá-los em um comando utilizável e, em seguida, executá-lo.

Começamos declarando o início e o fim da função:

BotãoEnviar:Retornar

Para "pegar" todos os valores da GUI, adicione o seguinte abaixo do BotãoEnviar linha:

Gui Enviar, sem ocultar

A linha a seguir cria uma nova variável chamada "WhisperFlags". Em seguida, adiciona a ele todas as variáveis ​​da GUI como sinalizadores para o comando Whisper.

WhisperFlags = --initial_prompt "%PromptText%" --task %TaskType% --model %SelectedModel% --language %SelectedLanguage% --output_format %OutputFormat% -o "%Pasta Selecionada%""%Arquivo Selecionado%"

Em seguida, vamos "dizer" ao AHK para usar o terminal padrão (CMD.exe) para executar o executável do Whisper (que definimos com o WhisperExecutable variável) com as variáveis ​​da GUI (que agora estão "montadas" no único WhisperFlags variável).

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

Para uma solução de problemas ainda mais fácil, também adicionamos uma msgbox, como antes, mas também adicionamos a seguinte linha:

Área de transferência = %WhisperExecutable% %WhisperFlags%

Isso irá copiar para o Prancheta o comando completo emitido para o CMD. Assim, se algo falhar, em vez de apenas ver o comando em uma das caixas de mensagem do AHK, você também o terá disponível em sua área de transferência.

Abra um terminal, cole o comando da área de transferência e verifique os erros que aparecem para localizar possíveis problemas.

Por exemplo, enquanto trabalhava no script, inicialmente esqueci de colocar o prompt entre aspas. Portanto, o comando falhou, pois o Whisper tentou analisar o prompt como sinalizadores.

Testes e ajustes finais

Foi isso - acabamos de criar um aplicativo de transcrição usando os recursos de criação de GUI do AutoHotkey e uma solução de transcrição AI pronta para usar.

Tente executar seu script (clique duas vezes em seu arquivo) e você verá sua GUI na tela.

  • Altere as configurações do Whisper usando as listas suspensas na parte superior.
  • Digite uma breve descrição de sua transcrição (e alguns termos) no Incitar campo.
  • Clique no Carregar arquivo botão e escolha o arquivo de áudio que deseja transcrever.
  • Clique no Escolha a pasta de saída botão e selecione onde o arquivo de texto produzido deve ser armazenado.
  • Clique em OK para liberar o Whisper, conforme configurado por sua GUI, em seu arquivo de áudio selecionado e salvar sua transcrição como um arquivo de texto na pasta selecionada.

Se tudo funcionou, volte ao seu script e exclua ou comente (adicionando um ";" no início) toda a funcionalidade de solução de problemas (caixas de mensagem e linhas de cópia para a área de transferência).

Levando o Whisper mais longe com o AutoHotkey

Definindo corretamente os valores padrão de sua GUI e talvez adicionando um prompt genérico, você pode transformar o Whisper em um solução de três cliques para transcrever: sem pagar por soluções comerciais, serviços de terceiros, mexer em interfaces complicadas ou digitando em um terminal.