Entrada de voz local y privada con Whisper en el dispositivo
Por qué MadoHub corre reconocimiento de voz en tu máquina en lugar de llamar a una API en la nube, qué significa eso para privacidad y coste, y cómo sacarle el máximo al dictado.
MadoHub se sienta junto a tu código. Cuando dictas en él, a menudo estás describiendo lo que estás mirando actualmente — un stack trace, un nombre de variable, un fragmento de un fichero de configuración, a veces un secreto que lees de un .env para explicárselo a un agente. Ese no es audio que quieras entregar por defecto a una API de voz de terceros. Así que la entrada de voz en MadoHub no llama a una. Corre whisper.cpp localmente, en el mismo proceso que el resto de la app.
Este post va sobre por qué importa esa decisión y cómo sacarle el máximo al dictado en MadoHub, a un nivel de detalle con el que puedas actuar.
Cómo lo gestiona MadoHub
Ningún audio sale de la máquina
No hay subida en streaming, no hay clave de API, no hay petición saliente a un proveedor de speech-to-text. El audio capturado se transcribe con un modelo Whisper local que vive en tu disco. La única llamada a la red en toda la función es la descarga única del modelo; después, grabar y transcribir ocurren ambos con la máquina offline.
Eso tiene dos consecuencias directas que vale la pena nombrar:
- Nada de lo que dices (ni de lo que hay en tu pantalla mientras lo dices) se transmite a ningún sitio. Para una herramienta construida para sentarse dentro de tu código de trabajo, eso no es un extra — es la razón por la que la entrada de voz es utilizable para algo sensible.
- No hay coste por minuto ni por petición. Una vez descargado un modelo, transcribir es gratis y sin medir — es cómputo local, no una llamada facturada a una API.
Funciona offline
Como el modelo vive en disco y el transcriptor corre en proceso, la entrada de voz funciona sin conexión a internet en absoluto, mientras el fichero del modelo ya esté presente. MadoHub lo comprueba antes incluso de abrir el micrófono: si el modelo seleccionado no está descargado, te manda a Configuración → Voz con un mensaje para descargarlo, en lugar de grabar en el silencio y solo fallar después al transcribir.
Rellenado para frases cortas, filtrado para ruido
El encoder de Whisper se entrenó con chunks de 30 segundos y se maneja mejor con un par de segundos de contexto. Las frases muy cortas — una o dos palabras rápidas — pueden disparar un modo de fallo conocido de Whisper donde el decoder hace un bucle repitiendo la misma frase una y otra vez. MadoHub se protege de esto rellenando las grabaciones cortas con un breve momento de silencio antes de la transcripción, dando al decoder suficiente margen para encontrar una pasada coherente única.
El audio silencioso o ambiguo todavía puede producir basura, así que MadoHub aplica dos umbrales para descartar segmentos que parecen silencio o ruido de baja confianza antes de convertirse en texto. El resultado es que los tramos silenciosos no se convierten en transcripciones alucinadas en tu prompt.
Cargado una vez, reutilizado, y descargado bajo demanda
El modelo Whisper se carga de forma perezosa: nada se lee de disco hasta la primera petición de transcripción. Una vez cargado, se queda residente en memoria y se reutiliza entre llamadas — para el modelo small por defecto, son aproximadamente 500 MB retenidos en RAM mientras la entrada de voz esté en uso. Si cambias de tamaño de modelo en Configuración → Voz, MadoHub descarta el modelo viejo en lugar de dejar un buffer caduco persistiendo, y carga el recién seleccionado en la próxima transcripción.
Guía práctica
- Descarga un modelo antes de necesitarlo. La entrada de voz no abrirá el micrófono hasta que haya un modelo presente. Elige uno en Configuración → Voz por adelantado para que el primer dictado no se quede bloqueado en una descarga.
- Elige un tamaño de modelo que encaje con tu máquina. El modelo
smallpor defecto es un buen equilibrio de precisión y huella (~500 MB residente). Los modelos más grandes son más precisos pero más pesados; los más pequeños son más ligeros pero menos precisos. Cambia en Configuración → Voz y el cambio surte efecto en la próxima transcripción. - Habla de forma natural, no en palabras sueltas. Como Whisper maneja mejor chunks de 30 segundos que fracciones de segundo, las frases normales se transcriben de forma más fiable que palabras aisladas. Si dictas palabra a palabra, espera artefactos de repetición ocasionales.
- Úsalo para lo que tienes en pantalla. El dictado brilla cuando describes un stack trace, recorres un bug o narras un plan mientras miras código — justamente los casos en los que preferirías no entregar el audio a una API en la nube.
- Mantente offline si quieres. Una vez descargado el modelo, la transcripción funciona con la red totalmente apagada. Si estás trabajando en algo sensible, eso es una propiedad con significado, no una curiosidad.
Nada de esto es ingeniería exótica — el atractivo es que todo el camino de micrófono a texto es corto, local e inspeccionable, que es exactamente lo que quieres cuando lo que estás dictando podría ser una descripción de código que no se supone que salga de tu portátil.