Whispree - app de entrada por voz para macOS com STT + correção por LLM para desenvolvedores coreanos
(github.com/Arsture)Sou um universitário que gosta de desenvolver. Sempre que eu pedia algo para uma IA, a digitação virava um gargalo, então fui procurar entrada por voz e, no começo, usei o Superwhisper. Não era ruim, mas como não era voltado especificamente para coreano, errava palavras o tempo todo.
- Quando eu dizia "Subi um PR no GitHub" → transcrevia algo como "Subi um pul no GitHub"
- A latência era boa, mas a taxa de reconhecimento era frustrante
Pagando melhorava um pouco. Mas como sou universitário, estava sem grana... e não queria pagar.
→ Então tentei implementar com STT local e LLM, mas ficou lento demais.
→ Aí percebi que eu já assino o GPT, então dava para “pegar emprestado” um LLM via OAuth, e usar STT com algo como o Groq por um custo quase zero.
Nessa direção, criei um app pessoal para macOS em Swift.
Funcionamento principal: aperte a hotkey e fale, então STT → correção por LLM → colagem automática na posição original do cursor.
É de 3 a 5 vezes mais rápido que digitar e, mesmo que eu tenha olhado outra janela durante a gravação, ele lembra a posição de foco inicial e insere exatamente ali.
Diferença em relação aos apps de digitação por voz existentes
Os apps atuais param em STT → colar, mas o Whispree adiciona uma camada de correção por LLM depois do STT. Não encontrei apps comerciais focados especificamente em coreano.
"밸리데이션 해야 되거든" → "validation 해야 되거든"
"랙트 컴포넌트" → "React 컴포넌트"
"깃헙에 펄 올려놨어" → "GitHub에 PR 올려놨어"
Depois que terminei, fiquei bastante satisfeito e continuei usando enquanto adicionava mais recursos.
Structured Mode
Usando entrada por voz com IA o tempo todo, percebi que eu falava de forma mais desorganizada do que imaginava. Entravam muitos “e aí”, “hum” e coisas assim. Então pensei que seria ótimo se o LLM fizesse uma pós-correção e estruturasse tudo em bullet points, e foi assim que criei isso.
Quando estou despejando ideias de planejamento, aperto a hotkey e vou falando sem parar, e ele insere um prompt já organizado.
Visual Context
Só com a fala, o LLM às vezes não entendia o contexto e fazia correções sem sentido. Então decidi capturar automaticamente a tela que estou vendo durante a gravação.
- No começo eu incluía só a tela em foco, mas na prática eu gravava enquanto também olhava outras abas
- Então expandi para capturar todas as abas
- Ao trocar de aba, ele captura imediatamente a aba anterior; se eu parar 1,5 segundo na mesma tela, captura aquele momento
- Também adicionei a função de colar screenshots diretamente no prompt
Quick Fix (Ctrl+Shift+D)
Registra imediatamente palavras erradas no dicionário de correção. Isso melhora a taxa de reconhecimento. Também criei o recurso de dicionário de palavras e, por preguiça, transformei em hotkey.
Quase de graça
- STT: API da Groq (gratuita)
- Correção por LLM: usa diretamente o token de autenticação do Codex CLI. Se você já tiver uma conta OpenAI, quase não há custo adicional
- Também é possível usar só localmente: se você não tiver uma conta com assinatura do Codex, pode usar modelos locais. Mas, nesse caso, a DX provavelmente vai ser melhor usando um modelo leve do Qwen ou apenas STT...
Providers & modos
- STT: 3 opções — WhisperKit / Groq / MLX Audio
- LLM: 6 modelos locais (Qwen, GLM) + 5 da OpenAI
- Modos de correção: 4 tipos — Standard / Filler Removal / Structured / Custom
- O recurso Can I Run dentro do app permite verificar o nível de compatibilidade com o seu dispositivo
Instalação
brew tap Arsture/whispree && brew install --cask whispree
É exclusivo para macOS 14+ (Sonoma) e Apple Silicon. Como no começo eu fiz só para mim, criei para macOS, e ainda não há suporte para outras plataformas.
No começo, o nome era FreeWhisper. Afinal, eu só queria usar de graça para mim mesmo. Mas, quando resolvi abrir o código, FreeWhisper pareceu meio sem graça. Também pensei em "NotMyWhisper", por causa da ideia de pegar emprestada uma API key. Tinha um clima meio “gato emprestado”, e eu gostei disso. Mas, conforme fui usando, comecei a sentir algo como “isso não é o whisper de outra pessoa, é o meu whisper”, e no fim virou Whispree.
É open source sob a licença MIT. Feedbacks são bem-vindos.
15 comentários
Voltei a usar depois de um bom tempo e ele evoluiu bastante nesse meio-tempo.
Mas tem uma coisa que eu gostaria que melhorasse.
O recurso de contexto visual é muito bom. Só que é meio incômodo mostrar a tela capturada toda vez que a gravação termina. Dá para cancelar só apertando ESC, mas eu preferia que nem aparecesse.
Se a ideia é colar a tela que foi capturada durante a gravação, que tal complementar isso com uma função para reencontrar a captura depois que terminar?
Enquanto estiver gravando, se você mantiver pressionada a tecla Option esquerda, o contexto ainda será enviado, mas você pode desativar a colagem!
Será que é esse recurso que você quis dizer??
Não. Eu uso apenas a função de transcrição. Mas é incômodo aparecer a lista de capturas de tela toda vez que a gravação termina, então eu queria poder desativar isso.
Se eu pressionar a tecla Option, ela não aparece. Mas, no meu padrão de uso, isso também é um pouco inconveniente. Acho que muitas pessoas devem ter um incômodo parecido. Seria possível refletir isso na opção principal?
Ah, como opção principal isso provavelmente fica desativado por padrão, mas se você estiver em uma versão anterior, talvez essa mudança não tenha sido aplicada ainda!
No app whispree -> LLM -> Contexto de screenshot -> Enviar para o agente, você pode desativar explicitamente deixando em Off!
Sobre a parte do seu padrão de uso que está incômoda, não consegui entender com clareza por aqui, talvez porque não dê para anexar imagens aqui T_T
Se tudo bem para você, poderia abrir uma issue no GitHub? Aí vou tentar entender o contexto o máximo possível e refletir isso.
Obrigado. Como hoje não estava aparecendo, fiquei me perguntando o motivo, mas então era porque vocês tinham atualizado a funcionalidade.
Agradeço pelo feedback rápido.
Eu sentia falta de alguns pontos ao usar o Handy, então isso parece ótimo. Vou trocar e usar por enquanto.
Obrigado! Feedback é sempre bem-vindo!
Muito bom :) Torcendo por vocês.
Obrigado :)
Parece que há um bug na configuração dos atalhos.
Nossa, será que eu poderia perguntar que tipo de bug é?
Nem dá para configurar os atalhos e, se eu redefinir, os atalhos simplesmente desaparecem de vez.
Será que a permissão de Accessibility está configurada?
Se ainda não estiver, adicione o app Whispree em Accessibility, tente configurar o atalho novamente e, se puder, nos avise!
Usei uma vez e é excelente. Torço por vocês.
Obrigado!