O Whisper da OpenAI é uma ferramenta eficaz para a conversão de voz em texto. No entanto, pode ser trabalhoso utilizá-lo, pois exige a digitação de comandos para transcrever arquivos de áudio. Mas, por que não simplificar esse processo com o AutoHotkey?
Com o AutoHotkey, é possível criar facilmente uma interface gráfica (GUI) para aplicativos de linha de comando como o Whisper. Vamos explorar como você pode desenvolver seu próprio aplicativo de transcrição, combinando as capacidades de criação de GUI do AutoHotkey com o poder do Whisper da OpenAI como o “motor” por trás dos botões.
Preparando o Terreno para o Whisper e o AutoHotkey
O AutoHotkey não se limita apenas à criação de scripts. Neste projeto, usaremos o AutoHotkey para construir uma GUI para o Whisper. Isso nos permitirá utilizar a ferramenta de reconhecimento de voz da OpenAI de maneira mais amigável, através de cliques em botões e personalização por meio de menus, em vez de comandos digitados.
Para acompanhar este guia, você precisará ter o AutoHotkey e o Whisper instalados.
Para a primeira parte, você pode baixar o AutoHotkey no site oficial, executar o instalador e seguir os passos indicados.
É importante destacar que utilizaremos a versão “v1” do script, e não a nova v2. As duas versões possuem sintaxes ligeiramente diferentes, e o que será apresentado aqui pode não funcionar corretamente na versão v2.
A instalação do Whisper é um pouco mais complexa, mas você pode seguir nosso artigo sobre como transformar sua voz em texto com o Whisper para Windows da OpenAI.
Com ambos instalados, nosso plano de ação é o seguinte:
Você sempre pode usar o recurso de digitação por voz do Windows, como explorado em nosso artigo sobre como iniciar a digitação por voz no Windows 11. No entanto, como você perceberá ao usar, o Whisper é muito mais preciso (embora um pouco mais lento).
Em uma nota pessoal, é importante mencionar que não sou programador profissional, e este projeto é uma adaptação de uma solução desenvolvida para uso pessoal.
Como Criar um Novo Script AutoHotkey
O primeiro passo é criar um arquivo de script em branco. Sugere-se mantê-lo em sua própria pasta, caso você deseje fazer ajustes ou adicionar mais arquivos no futuro.



Explorando as Opções do Whisper
Como estamos construindo uma GUI para um aplicativo de linha de comando, é útil ter uma referência das principais variáveis e opções que utilizaremos em nosso projeto. Você pode consultar a documentação do Whisper, visitar sua página oficial no Github ou executá-lo diretamente no terminal.
Para sua conveniência, listaremos aqueles que utilizaremos neste projeto. Sugere-se que você os adicione ao seu script como comentários (em linhas separadas, começando com um caractere “;” seguido de um espaço).
; Opções do Whisper:;
Construindo a GUI com AutoHotkey
Para manter o script organizado, sugere-se dividi-lo em seções usando comentários, como feito anteriormente. Começaremos definindo algumas variáveis, depois construiremos a GUI propriamente dita e finalizaremos definindo as suas funções.
Definindo as Variáveis Ocultas
Iniciamos definindo as variáveis que podem ser alteradas no futuro, mas não com tanta frequência que justifique expô-las na GUI, o que a tornaria muito complexa. Para definir uma variável, use a estrutura “Nome_da_Variavel = Conteúdo ou valor da variável”, com cada variável e seu valor em uma linha separada.
Neste projeto, definimos uma variável OutputFormat com o valor “txt” e uma variável WhisperExecutable que indica o nome do arquivo executável do Whisper. Dessa forma, se quisermos reutilizar a solução no futuro para gerar arquivos de legenda SRT, em vez de documentos TXT, ou atualizar o Whisper/trocar para um aplicativo alternativo, poderemos ajustar os valores dessas variáveis em um único ponto, em vez de em todo o script.
OutputFormat = txtWhisperExecutable = whisper
Configurando as Opções do Usuário
Ao usar o Whisper na linha de comando, três de suas opções permitem definir:
- Se você deseja traduzir ou transcrever.
- O idioma do arquivo de áudio.
- O modelo de idioma que você quer usar (vários tamanhos estão disponíveis, cada um com impacto no desempenho e na qualidade dos resultados).
A forma mais fácil de oferecer essas opções em uma GUI é através de listas suspensas. A sintaxe para adicionar uma lista suspensa a uma GUI do AutoHotkey é a seguinte:
Gui, Add, DropDownList, xPosição yPosição Largura Altura vVariável_que_armazenará_o_valor_selecionado, opçãoA|opçãoB|opção_padrãoC||opçãoD|
Com base nisso, adicionaremos três listas suspensas ao script para selecionar o idioma do Whisper (entre inglês/en e grego/el), modelo (tiny, base, small, medium, large) e o 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, Add, DropDownList, x345 y5 w165 h100 vTaskType, transcribe||translate|
Para definir uma opção como a seleção padrão, utilize um símbolo de barra dupla (“||”) após ela. No exemplo, definimos o idioma como en, o SelectedModel como small e o TaskType como transcribe.
Como Orientar o Whisper
Como o Whisper é baseado em IA, não há controle absoluto sobre a forma como ele transcreve o áudio. Ele tem liberdade para decidir o que considera ideal.
No entanto, assim como outras soluções de IA, o Whisper pode aceitar orientações do usuário. Ao criar um prompt, você pode “direcionar” a transcrição do áudio.
Se a solução que estamos criando falhar na transcrição de algo corretamente, você pode tentar “explicar” ao Whisper o assunto do arquivo de voz, incluindo a sintaxe das palavras, acrônimos e frases que deseja que apareçam na transcrição. Para isso, adicionaremos um campo de texto AutoHotkey Edit.
A sintaxe não é muito diferente da que usamos para adicionar listas suspensas:
Gui, Add, Edit, x5 w505 h400 vPromptText, %PromptText%
O “%PromptText%” no final indica ao AHK para exibir o conteúdo da variável PromptText (se ela tiver algum valor atribuído) dentro do campo de texto. Isso não mostrará nada no script que estamos criando, mas considere-o um espaço reservado para quando você ajustar o script no futuro para salvar e carregar prompts!
Se você quiser atribuir um valor predefinido à variável PromptText, adicione algo como o seguinte na seção Variáveis do script. Lembre-se de substituir “Seu Nome” pelo seu nome real.
PromptText = Transcrição das anotações de Seu Nome
Configurando os Botões de Ação
Para selecionar arquivos, pastas e executar o Whisper depois de configurar tudo, é melhor utilizar botões. Você pode adicionar botões a uma interface criada pelo AHK com o seguinte código:
Gui, Add, Button, xPosição yPosição Largura Altura gFunção_a_Ser_Executada, Texto do Botão
Observe que, ao contrário das variáveis nos elementos da GUI, que começam com a letra “v”, os nomes das funções começam com “g”, indicando “Ir (para este ponto do script)”.
Um único botão de uma interface AHK pode ser definido como “o padrão”, que será ativado se você não clicar em nenhum lugar na GUI e pressionar Enter. Isso é definido adicionando “padrão” na seção de coordenadas e função, como você verá em nosso botão “OK”:
Gui, Add, Button, x5 w505 h50 gSelectFile, Carregar ArquivoGui, Add, Button, x5 w505 h50 gSelectFolder, Escolher Pasta de Saída
Gui, Add, Button, Default x5 w505 h50 gButtonSubmit, OK
Com isso, estamos definindo três botões:
- Um chamado “Carregar Arquivo” que, quando clicado, executará a função SelectFile.
- Um chamado “Escolher Pasta de Saída”, que executará a função SelectFolder.
- Um rotulado como “OK”, selecionado por padrão, que “chamará” a função ButtonSubmit.
Como Exibir Sua GUI
Nossa GUI está pronta, mas não aparecerá na tela porque ainda não “dissemos” ao AutoHotkey para exibi-la e o que cada botão deve fazer.
Para isso, adicione as duas linhas abaixo daquelas que definem a GUI:
Gui, ShowReturn
A primeira linha “diz” ao AHK para mostrar a janela da GUI, enquanto a segunda marca o fim da seção.
As Funções e Funcionalidades do Nosso Aplicativo
Embora a seção da GUI esteja concluída, se você tentar executar o script, ele travará, pois estamos referenciando funções inexistentes nele. Portanto, nosso próximo passo é criar essas funções.
As três funções que precisamos são:
- Selecionar um arquivo de entrada.
- Selecionar a pasta de saída onde o arquivo transcrito será salvo.
- Criar um comando que “reúna” todas as variáveis em um comando Whisper utilizável, similar ao que digitaríamos no terminal, e depois executá-lo.
Seleção do Arquivo de Entrada
A primeira função, que já nomeamos como “SelectFile” quando adicionamos seu botão na GUI, é:
SelectFile:FileSelectFile, SelectedFileReturn
FileSelectFile é uma função AutoHotkey que exibe um solicitador de arquivos comum, permitindo que o usuário selecione um arquivo. SelectedFile é a variável em nosso script que irá “armazenar” o caminho para o arquivo selecionado pelo usuário.
No entanto, como você verá em nossas capturas de tela, também adicionamos a seguinte linha logo acima do “return” no final da função:
MsgBox, %SelectedFile%
Isso fará com que o AHK mostre uma caixa de mensagem com o arquivo selecionado depois que você o escolher, o que é útil ao solucionar problemas em seu script. Se esta caixa de mensagem exibir o caminho e o nome do arquivo selecionado, significa que não é o botão ou a função de seleção de arquivo que precisam de correção.
Seleção da Pasta de Saída
A função para selecionar uma pasta é quase idêntica, apenas mudando o nome do comando e a variável, para indicar que estamos lidando com pastas em vez de arquivos:
SelectFolder:FileSelectFolder, SelectedFolderMsgBox, %SelectedFolder%Return
A Função Final
A função final será a mais complexa. Mapeada para o botão OK, ela irá “reunir” todos os valores variáveis da GUI, transformá-los em um comando utilizável e depois executá-lo.
Começamos declarando o início e o fim da função:
ButtonSubmit:Return
Para “pegar” todos os valores da GUI, adicione o seguinte na linha ButtonSubmit:
Gui Submit, nohide
A próxima linha cria uma nova variável chamada “WhisperFlags”. Em seguida, adiciona a ela todas as variáveis da GUI como opções para o comando Whisper.
WhisperFlags = --initial_prompt "%PromptText%" --task %TaskType% --model %SelectedModel% --language %SelectedLanguage% --output_format %OutputFormat% -o "%SelectedFolder%" "%SelectedFile%"
Em seguida, vamos “dizer” ao AHK para usar o terminal padrão (CMD.exe) para executar o executável do Whisper (que definimos com a variável WhisperExecutable) com as variáveis da GUI (que agora estão “reunidas” na única variável WhisperFlags).
RunWait, cmd.exe /c %WhisperExecutable% %WhisperFlags%
Para facilitar ainda mais a solução de problemas, também adicionamos uma msgbox, como antes, mas também incluímos a seguinte linha:
Clipboard = %WhisperExecutable% %WhisperFlags%
Isso copiará para a área de transferência o comando completo emitido para o CMD. Assim, se algo der errado, 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, ao desenvolver o script, inicialmente esqueci de colocar o prompt entre aspas. Portanto, o comando falhou, pois o Whisper tentou analisar o prompt como opções.
Testes e Ajustes Finais
E isso é tudo! 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 de IA pronta para usar.
Tente executar seu script (clique duas vezes no arquivo) e você verá a GUI na tela.
- Altere as configurações do Whisper usando as listas suspensas na parte superior.
- Digite uma breve descrição da sua transcrição (e alguns termos) no campo Prompt.
- Clique no botão Carregar Arquivo e escolha o arquivo de áudio que você deseja transcrever.
- Clique no botão Escolher Pasta de Saída e selecione onde o arquivo de texto produzido deve ser salvo.
- Clique em OK para executar o Whisper, conforme configurado pela sua GUI, no arquivo de áudio selecionado e salvar a transcrição como um arquivo de texto na pasta selecionada.
Se tudo funcionou corretamente, volte ao script e exclua ou comente (adicionando um “;” no início) todos os recursos de solução de problemas (caixas de mensagem e linhas de cópia para a área de transferência).
Aprimorando o Whisper com o AutoHotkey
Ao definir corretamente os valores padrão da sua GUI e talvez adicionar um prompt genérico, você pode transformar o Whisper em uma solução de três cliques para transcrever: sem pagar por soluções comerciais, serviços de terceiros, interagir com interfaces complicadas ou usar um terminal.