Whispree - app de macOS de entrada por voz con STT + corrección con LLM para desarrolladores de habla coreana
(github.com/Arsture)Soy un universitario al que le gusta desarrollar. Cada vez que le pedía algo a una IA, el cuello de botella era escribir, así que busqué opciones de entrada por voz y al principio usé Superwhisper. No estaba mal, pero como no era algo dedicado al coreano, se equivocaba mucho con las palabras.
- Si decía "subí un PR a GitHub" → lo transcribía como algo del estilo de "subí un pul a GitHub"
- La latencia era buena, pero la tasa de reconocimiento resultaba frustrante
Pagando sí mejoraba. Pero como soy estudiante universitario y ando corto de dinero... no quería pagar.
→ Así que intenté implementarlo con STT local y un LLM, pero era demasiado lento.
→ Luego pensé que yo ya estaba suscrito a GPT, así que podía tomar prestado un LLM vía OAuth, y para STT podía usar algo como Groq casi gratis.
Con esa idea hice una app personal de macOS en Swift.
Funcionamiento principal: presionas una hotkey, hablas, y hace STT → corrección con LLM → pegado automático en la posición original del cursor.
Es de 3 a 5 veces más rápido que escribir y, aunque durante la grabación hayas estado viendo otra ventana, recuerda la posición de foco inicial e inserta el texto exactamente ahí.
Diferencias frente a las apps de dictado por voz existentes
Las apps existentes terminan en STT → pegar, pero Whispree añade una capa de corrección con LLM después del STT. No encontré apps comerciales enfocadas específicamente en coreano.
"밸리데이션 해야 되거든" → "validation 해야 되거든"
"랙트 컴포넌트" → "React 컴포넌트"
"깃헙에 펄 올려놨어" → "GitHub에 PR 올려놨어"
Cuando lo terminé, quedé bastante satisfecho, así que seguí usándolo y agregándole funciones.
Structured Mode
Al seguir hablándole a la IA para ingresar texto, me di cuenta de que hablaba con menos orden del que pensaba. Metía muchas cosas como "y" o "eh". Así que pensé que estaría bien que el LLM hiciera una posedición y lo estructurara en viñetas, y por eso lo implementé.
Cuando quiero soltar ideas de producto, presiono la hotkey y hablo seguido, y entra un prompt ya organizado.
Visual Context
Solo con la voz, el LLM a veces no entendía el contexto y corregía cosas de manera extraña. Por eso decidí capturar automáticamente la pantalla que estoy viendo mientras grabo.
- Al principio solo incluía la pantalla enfocada, pero en la práctica yo grababa mientras revisaba también otras pestañas
- Así que lo amplié para capturar todas las pestañas
- Si cambias de pestaña, captura de inmediato la pestaña anterior; si te quedas 1.5 segundos en una pantalla, captura ese momento
- También agregué la función de pegar capturas directamente en el prompt
Quick Fix (Ctrl+Shift+D)
Registra de inmediato palabras incorrectas en el diccionario de corrección. Eso mejora la tasa de reconocimiento. También implementé la función de diccionario de palabras y, por comodidad, la convertí en hotkey.
Casi gratis
- STT: API de Groq (gratis)
- Corrección con LLM: reutiliza tal cual el token de autenticación de Codex CLI. Si tienes una cuenta de OpenAI, casi no hay costo adicional
- También puede usarse solo en local: si no tienes una cuenta con suscripción a Codex, puedes usar modelos locales. Eso sí, para una mejor DX, probablemente convenga usar un modelo ligero de Qwen o usar solo STT...
Proveedores y modos
- STT: WhisperKit / Groq / MLX Audio, 3 opciones
- LLM: 6 opciones locales (Qwen, GLM) + 5 de OpenAI
- Modos de corrección: Standard / Filler Removal / Structured / Custom, 4 opciones
- Dentro de la app hay una función Can I Run para revisar el nivel de compatibilidad con tu equipo
Instalación
brew tap Arsture/whispree && brew install --cask whispree
Es exclusivo para macOS 14+ (Sonoma) y Apple Silicon. Al principio era solo para uso personal, por eso lo hice para macOS, y todavía no es compatible con otras plataformas.
Al principio incluso se llamaba FreeWhisper. La idea era usarlo gratis solo yo. Pero cuando decidí publicarlo como open source, FreeWhisper se me hizo medio flojo. Como usa claves API prestadas, también pensé en llamarlo "NotMyWhisper". Me gustaba porque daba una vibra como de "gato prestado". Pero conforme lo seguí usando, empecé a sentir algo como "esto no es el whisper de otro, es mi whisper", así que al final quedó como Whispree.
Es open source bajo licencia MIT. Se agradece cualquier feedback.
15 comentarios
Lo estoy volviendo a usar después de mucho tiempo y ha mejorado bastante durante ese tiempo.
Pero hay una cosa que me gustaría que mejoraran.
La función de contexto visual está muy bien. Pero que se muestre la pantalla capturada cada vez que termina la grabación es un poco incómodo. Se puede cancelar simplemente presionando ESC, pero preferiría que no apareciera en absoluto.
Si la idea es pegar la pantalla que se capturó al grabar, ¿qué tal complementarlo con una función para volver a encontrar la captura después de terminar?
Mientras grabas, si mantienes presionada la tecla Opción izquierda, el contexto sí se envía, pero puedes desactivar el pegado.
¿Será esta la función a la que te referías??
No. Yo uso únicamente la función de transcripción. Pero me resulta incómodo que cada vez que termina la grabación aparezca la lista de capturas de pantalla, así que quisiera poder desactivarla.
Veo que no aparece si mantengo presionada la tecla Opción. Pero para mi patrón de uso eso también es incómodo. Creo que hay muchas personas con una molestia similar. ¿Podrían reflejarlo en las opciones principales?
Ah, esa opción principal probablemente viene desactivada por defecto, pero si estás en una versión anterior, puede que no se haya aplicado.
En la app de whispree -> LLM -> Contexto de captura de pantalla -> Pasar al agente, si lo pones en Off puedes desactivarlo explícitamente.
Sobre la parte de tu patrón de uso que te resulta incómoda, no la entendí con total claridad, quizá porque aquí no se pueden adjuntar imágenes T_T
Si te parece bien, ¿podrías subirlo como un issue en GitHub? Así intentaré entender al máximo el contexto antes de reflejarlo.
Gracias. Como desde hoy ya no aparecía, me preguntaba por qué era, y resulta que habían actualizado la función.
Les agradezco la rápida respuesta.
Había cosas de Handy que me dejaban con ganas, así que esto se ve bien. Por un tiempo lo voy a cambiar para probarlo.
¡Muchas gracias! ¡Siempre agradecemos sus comentarios!
Se ve bien :) ¡Te apoyo!
Gracias :)
Parece que hay un bug en la configuración de los atajos de teclado.
Vaya, ¿podría preguntarte de qué error se trata?
Ni siquiera se puede configurar el atajo, y si lo restableces, el atajo desaparece por completo.
¿Quizás ya tengas configurado el permiso de Accesibilidad?
Si no es así, agrega la app Whispree en Accesibilidad, vuelve a intentar configurar el atajo de teclado y te agradeceríamos si nos avisas.
Lo probé una vez y está excelente. Te apoyo.
¡Gracias!