Como criar seu próprio aplicativo de transcrição para Windows com Whisper e AutoHotkey
A utilização do Whisper da OpenAI provou ser um meio altamente eficaz de converter palavras faladas em forma escrita. No entanto, o processo de utilização desta tecnologia pode muitas vezes revelar-se incómodo, uma vez que requer que o utilizador introduza comandos específicos para converter uma gravação áudio num documento escrito. Por outro lado, existe outra solução conhecida como AutoHotkey que elimina a necessidade de tal intervenção manual e permite aos utilizadores transcrever sem esforço ficheiros áudio para o formato desejado.
A utilização do AutoHotkey permite a criação de interfaces de utilizador para aplicações de linha de comandos, como o Whisper, com um esforço mínimo. Assim, vamos utilizar esta funcionalidade para construir uma interface gráfica para a nossa aplicação de transcrição, integrando as capacidades de automatização do AutoHotkey com a inteligência artificial do Whisper da OpenAI, que actuará como o “intelecto” por detrás dos botões.
Estabelecer as bases para o Whisper e o AutoHotkey
O AutoHotkey é uma linguagem de script avançada que oferece inúmeras funcionalidades para além da simples automatização de tarefas. Neste projeto, utilizaremos as suas capacidades para conceber uma interface gráfica de utilizador para o Whisper, permitindo assim que os utilizadores interajam com a tecnologia de reconhecimento de voz da OpenAI através de cliques intuitivos em botões e selecções de menu, em vez de introdução manual de comandos.
É necessário que o leitor possua o AutoHotkey e o Whisper para compreender as instruções fornecidas.
Para a primeira parte da equação, pode descarregar o AutoHotkey do seu site oficial , depois executar o seu instalador e seguir os passos apresentados.
Note que estaremos a utilizar a iteração anterior da linguagem de scripting, designada como “v1”, em vez da mais recente “v2”. Isto é importante porque as duas iterações possuem uma sintaxe distinta e certas operações podem não funcionar corretamente quando se utiliza a última versão.
Para obter uma compreensão mais profunda do processo, pode consultar o nosso guia completo sobre a utilização do Whisper da OpenAI para Windows para transcrever voz em texto.
O curso de ação que pretendemos seguir com ambas as aplicações instaladas é o seguinte:
A tarefa requer a conceção de uma interface gráfica do utilizador (GUI) que inclua componentes para apresentar as variáveis e os valores associados à plataforma Whisper.
O processo envolve o desenvolvimento de funções que podem recuperar dados da interface do utilizador, escolher ficheiros ou directórios seleccionados e depois compilá-los num comando Whisper operacional.
O comando Whisper deve ser executado para obter o seu resultado.
O sistema operativo acima mencionado fornece a funcionalidade de entrada de voz nativa, que foi demonstrada na nossa publicação anterior relativa à iniciação da funcionalidade de voz para texto no Windows 11. Embora esta funcionalidade possa ser utilizada, observou-se que as alternativas de terceiros, como o Whisper, oferecem maior precisão, mas à custa da velocidade.
A título particular, cabe-me reconhecer que não sou programador de profissão e que este empreendimento constitui um trabalho derivado adaptado às minhas necessidades individuais.
Como criar um novo script AutoHotkey
O procedimento inicial envolve a criação de um ficheiro de script sem nome numa pasta separada, reservando espaço para potenciais modificações ou adições futuras que possam resultar na criação de ficheiros adicionais.
⭐ Execute seu gerenciador de arquivos favorito (ou pressioneWindows Key+Epara iniciar o Windows Explorer) e crie uma pasta para seu aplicativo de transcrição em qualquer lugar que desejar.
⭐ Clique com o botão direito do mouse em um ponto em branco da janela e selecioneNovo
Script AutoHotkeypara criar um arquivo de script vazio.
⭐ Shift + Clique com o botão direito do rato no ficheiro para aceder ao menu de contexto completo e seleccione para o abrir com o seu código favorito ou editor de texto. O próprioNotepad do Windows serve.
⭐ Apesar de ser “um script vazio”, seu arquivo AHK já estará pré-populado com algumas “coisas”. Essas são variáveis e sinalizadores úteis do AutoHotkey que definem como ele deve funcionar na sua área de trabalho. Ignore-as, deixe-as como estão, e faça toda a sua digitação futura por baixo delas.
Conhecendo as flags do Whisper
Como estamos fazendo uma GUI para um aplicativo de linha de comando, é útil ter uma referência para suas principais variáveis e flags que usaremos em nosso projeto. Você pode verificá-los lendo a documentação do Whisper, visitando sua página oficial no Github , e executando-o em seu terminal.
Por uma questão de brevidade e clareza, incorporámos várias variáveis comummente utilizadas no âmbito deste projeto que serão utilizadas nas nossas discussões subsequentes. Recomenda-se que estas entidades sejam incluídas no guião como comentários, cada um começando numa nova linha e precedido pelo símbolo de ponto e vírgula (";") seguido de um espaço em branco.
; Whisper Flags:; --initial_prompt PROMPT_TEXT; --output_format txt; -o OUTPUT_FOLDER; --model MODEL_TO_USE; --task TRANSCRIBE/TRANSLATE; --language EN/EL
Criando a GUI com o AutoHotkey
Recomenda-se que você divida o script em segmentos utilizando observações, semelhantes às empregadas neste documento, para uma melhor organização. O processo deve começar com a delineação de certas variáveis, prosseguir para a implementação da interface gráfica do utilizador e concluir com a especificação das suas funcionalidades.
Estabelecimento das variáveis ocultas
Na fase inicial do nosso projeto, considerámos prudente dedicar um segmento à especificação de certos parâmetros que podem sofrer modificações num futuro próximo, mas não com frequência suficiente para exigir a sua inclusão na interface gráfica do utilizador, para que esta não se torne complicada. O procedimento a seguir consiste em introduzir a designação “Variável\Nome_da_variável = Valor da Variável” como uma única expressão por linha, em que cada variável é acompanhada do seu valor correspondente.
A presente empresa designou uma variável OutputFormat, à qual foi atribuído o valor “txt”. Adicionalmente, foi estabelecida uma variável WhisperExecutable, que especifica o nome do ficheiro executivo do Whisper. Ao configurar estes parâmetros, é agora possível utilizar a mesma metodologia no futuro para gerar não só ficheiros de legendas SRT, mas também outro tipo de documentos de texto ou mudar para outra aplicação, bastando para isso modificar as variáveis mencionadas neste local, em vez de dispersar essas modificações por todo o script.
OutputFormat = txtWhisperExecutable = whisper
Configurar as opções do utilizador
Que utilizador e grupo devem ser utilizados quando se cria um novo ficheiro ou diretório?
⭐ Se estiver a fazer tradução ou transcrição
⭐ O idioma do ficheiro de áudio
A escolha do modelo de idioma é um fator crucial para determinar o equilíbrio entre o desempenho e a qualidade da saída. Estão disponíveis diferentes tamanhos de modelos de língua e a seleção de um que melhor se adapte às suas necessidades pode ter um impacto significativo na eficiência global do sistema.
Ao longo da história, a humanidade tem sido fascinada pelo conceito de viagem no tempo. De “A Máquina do Tempo” de H.G. Wells
Gui, Add, DropDownList, xPosition yPosition wWidth hHeight vVariable_that_will_hold_selected_value, optionA|optionB|default_optionC||optionD|
Posso sugerir uma formulação mais refinada da afirmação dada? À luz desta informação, propõe-se a incorporação de três menus pendentes no guião para escolher as opções de língua do Whispers entre inglês/en e grego/el, seleccionando a sua variante de modelo entre minúsculo, base, pequeno, médio e grande, e especificando se a tarefa em questão é transcrição ou tradução.
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 designar uma alternativa como a escolha pré-selecionada, utilize o símbolo de barra vertical dupla ("|") a seguir à mesma. Repare como optámos por atribuir o nosso idioma a “en”, SelectedModel a “small
Como guiar o Whisper
Devido à natureza do Whisper como plataforma de inteligência artificial, não é possível garantir o domínio total sobre o seu processo de transcrição de áudio. O sistema reserva-se a prerrogativa de determinar o que constitui o curso de ação mais adequado.
Embora o Whisper seja capaz de aceitar as instruções do utilizador, à semelhança de outras soluções de IA, é possível manipular o seu processo de transcrição através da formulação de uma instrução específica. Este ato de conceber uma instrução permite a um indivíduo orientar a forma como a ferramenta de IA transcreve o seu conteúdo áudio.
Será que a solução que utilizámos para transcrever um determinado ficheiro áudio não foi bem sucedida? Nesse caso, poder-se-ia tentar dar uma explicação detalhada, sussurrando a natureza da gravação áudio, juntamente com a sintaxe pretendida de palavras, abreviaturas ou frases específicas na transcrição, através de uma janela de edição de texto AutoHotkey.
A estrutura gramatical utilizada na criação de caixas combinadas é relativamente semelhante à utilizada na incorporação de menus pendentes, apenas com ligeiras variações.
Gui, Add, Edit, x5 w505 h400 vPromptText, %PromptText%
A inclusão da diretiva “#PromptText#” no final da linha instrui o software de automação, AutoHotkey, a apresentar o conteúdo da variável “#PromptText#” na caixa de texto do script que está a ser criado. Embora esta instrução em particular não seja utilizada no script atual, serve como um espaço reservado para futuras modificações em que os prompts possam ter de ser guardados e carregados.
Sugiro a incorporação de um valor predeterminado para a variável PromptText no script, adicionando uma instrução na secção Variáveis que especifique uma cadeia de texto específica a ser utilizada como prompt. Certifique-se de que substitui qualquer instância de “Your Name’s” pelo seu nome real.
PromptText = Transcription of Your Name's notes
Configurar os botões de ação
A utilização de botões é preferível para selecionar ficheiros, pastas, e executar
Gui, Add, Button, xPosition yPosition wWidth hHeight gFunction_To_Perform, Button Text
Tenha em atenção que, ao contrário das variáveis nos componentes da interface gráfica do utilizador, que começam com a letra “v”, os nomes das funções começam com “g”, representando uma diretiva para “ir (para este ponto do script).
O componente singular de uma plataforma Automate Home Keyboard (AHK) pode ser designado por “botão por defeito”, que se tornará operacional se não for realizada qualquer ação na interface gráfica do utilizador e se for premida a tecla enter. Esta designação é estabelecida através da incorporação da especificação “default” na secção relativa às coordenadas e à função, como é o caso do nosso botão “OK”, que tem a seguinte redação
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
Com o exposto, estamos a definir três botões:
Foi fornecido um botão com a etiqueta “Carregar Ficheiro” que, ao ser clicado, executará a operação de seleção de um ficheiro de acordo com o requisito especificado na função denominada “Selecionar Ficheiro”.
O widget com a etiqueta acima referida, designado por “Choose Output Folder”, inicia a execução da funçãoSelectFolder.
A opção designada por “OK” é definida como a seleção predefinida e desencadeia a execução da função ButtonSubmit quando clicada.
Como mostrar a interface gráfica do usuário
A interface gráfica do usuário foi concluída, mas permanece oculta, pois as instruções necessárias para exibi-la e especificar suas funções ainda não foram transmitidas ao AutoHotkey.
pythonfrom tkinter import *import webbrowserPor favor, substitua
webbrowser
por um nome de pacote mais apropriado se necessário.
Gui, ShowReturn
O comando inicial direciona o AutoHotkey para exibir a interface gráfica do usuário, e a instrução subsequente conclui a seção designada.
As funções e a funcionalidade da nossa aplicação
A execução do script não consegue ir além da secção GUI devido à referência feita no script a certas funções que não existem atualmente. Consequentemente, a criação destas funções tem de ser efectuada antes de tentar executar o script.
As três funções que pretendemos são:
⭐ Selecionar um ficheiro de entrada.
Escolha o diretório no qual a transcrição do ficheiro de áudio será guardada.
O processo envolve a formulação de um comando capaz de compilar todas as variáveis num formato adequado para execução na plataforma Whispers, à semelhança da introdução manual de comandos através de uma interface de terminal. Este comando é posteriormente executado.
Seleção do Ficheiro de Entrada
A funcionalidade inicial que foi atribuída com a designação de “SelectFile” através da incorporação de um botão correspondente na interface gráfica do utilizador, diz respeito ao seguinte processo:
SelectFile:FileSelectFile, SelectedFileReturn
A função
FileSelectFile
, que é um componente do conjunto de software AutoHotkey, apresenta uma interface padronizada para os utilizadores escolherem um ficheiro do seu sistema. O ficheiro escolhido é subsequentemente armazenado na variável
SelectedFile
do script.
Para além das alterações acima mencionadas, incluímos uma linha adicional acima do “return” final de cada função, que será demonstrada através das capturas de ecrã anexas.
MsgBox, %SelectedFile%
O enunciado sugere que, ao selecionar um ficheiro, o AHK mostrará uma caixa de diálogo indicando o caminho e o nome do ficheiro escolhido. Se a mensagem aparecer, significa que não há qualquer problema com o botão ou a função de seleção de ficheiros, pelo que pode ser ignorada na resolução de problemas do script.
Seleção da pasta de saída
O processo de escolha de um diretório utiliza uma técnica semelhante, com pequenas modificações para indicar que se trata de directórios e não de ficheiros.
SelectFolder:FileSelectFolder, SelectedFolderMsgBox, %SelectedFolder%Return
A função final
A implementação da última função pode exigir manipulações complexas dos valores de entrada obtidos a partir da interface gráfica do utilizador, implicando a transformação desses valores num comando executável que pode ser executado pelo sistema. Ao clicar no botão OK, esta função efectua as operações necessárias para realizar a tarefa.
Comecemos por delinear os pontos de início e de fim da função:
ButtonSubmit:Return
A obtenção de todos os valores a partir da interface gráfica do utilizador pode ser conseguida adicionando um fragmento de código específico por baixo da etiqueta do botão “ButtonSubmit”.
Gui Submit, nohide
O código cria uma nova entidade denominada “WhisperFlags” e imbui-a de todas as propriedades das variáveis da GUI, servindo de sinalizadores para o comando “Whisper”.
WhisperFlags = --initial_prompt "%PromptText%" --task %TaskType% --model %SelectedModel% --language %SelectedLanguage% --output_format %OutputFormat% -o "%SelectedFolder%" "%SelectedFile%"
Diremos ao AHK para utilizar o prompt de comando padrão (CMD.exe) para executar o arquivo executável do Whisper, que foi designado pela variável WhisperExecutable, juntamente com as variáveis montadas da interface gráfica do usuário, englobadas na variável WhisperFlags.
RunWait, cmd.exe /c %WhisperExecutable% %WhisperFlags%
Incluímos uma caixa de mensagens para facilitar a resolução de problemas. Além disso, incorporámos uma linha adicional para melhorar a sua funcionalidade.
Clipboard = %WhisperExecutable% %WhisperFlags%
A presente declaração garante que todo o comando direcionado para a linha de comandos (CMD) será copiado para a área de transferência. Como resultado, se alguma operação falhar, o comando não só aparecerá na caixa de mensagens do Ahk como também residirá na Área de Transferência para referência futura.
Por favor, execute o comando que foi copiado no terminal, examine quaisquer erros que apareçam e utilize-os como uma oportunidade para identificar possíveis problemas.
Durante o desenvolvimento do script, eu inadvertidamente omiti o prompt entre aspas. Consequentemente, o comando não teve êxito porque a Whisper tentou interpretar o prompt como um conjunto de comandos em vez de texto a ser exibido.
Testes e ajustes finais
Desenvolvemos com sucesso uma aplicação de transcrição utilizando as capacidades de criação de interface gráfica do utilizador do AutoHotkey, juntamente com uma tecnologia de transcrição de IA pré-existente.
Ao executar o script através de um duplo clique no seu ficheiro, a interface gráfica do utilizador aparece no ecrã.
Altere as opções de configuração do Whisper utilizando os menus pendentes localizados acima.
Seleccione o ficheiro áudio que pretende transcrever, clicando no botão “Carregar ficheiro” e escolhendo o ficheiro pretendido no seu dispositivo.
Seleccione a pasta de saída desejada, clicando no botão “Choose Output Folder” (Escolher pasta de saída) e especificando o local onde o ficheiro de texto gerado deve ser guardado.
Desvende a configuração da sua interface gráfica de utilizador clicando em “OK”, o que permitirá ao Whisper transcrever o ficheiro de áudio escolhido na pasta designada como um documento de texto.
Se todos os aspectos do programa tiverem sido executados com sucesso, retorne ao script e erradique ou comente (acrescentando um ponto-e-vírgula no início de cada linha) todos os recursos de diagnóstico
Levando o Whisper adiante com o AutoHotkey
não há necessidade de gastos financeiros com alternativas comerciais, serviços de terceiros ou enfrentando complexidades na navegação por interfaces intrincadas, nem há necessidade de operação manual em uma linha de comando.