Dictado por voz local con Hex 3.0: streaming en GPU Parakeet de 160MB (Mac/Windows/Linux)
Descubre cómo Hex 3.0 ejecuta dictado por voz en streaming por GPU con Parakeet (160MB) en 100ms para Mac, Windows y Linux, con soluciones para Wayland, GPU Intel y varios idiomas.
Resumen
- Hex 3.0 es una herramienta de código abierto para dictado por voz local.
- Apple Silicon usa Metal estricto, Windows x64 usa Vulkan para el streaming en GPU de Parakeet Unified en inglés y Windows ARM64 se ejecuta en la CPU.
- Incluye soluciones prácticas para el punto naranja del micrófono en macOS, atajos en Linux Wayland, bloqueos de GPU Intel Arc, cortes de VAD por volumen bajo y cambio de idiomas.
Hex es una herramienta de dictado por voz de escritorio de código abierto basada en Rust (anoma.ly/hex) que ejecuta modelos de conversión de voz a texto localmente en tu computadora. En lugar de enviar el audio de tu micrófono a un servidor en la nube, escucha mientras mantienes presionado un atajo de teclado global y pega el texto transcrito directamente en el editor de código, pestaña del navegador o ventana de terminal que tenga el foco en ese momento.
Con el lanzamiento de Hex 3.0, la aplicación trasladó su flujo de dictado en inglés predeterminado a una arquitectura de transmisión (streaming) en GPU impulsada por el modelo Parakeet Unified de NVIDIA. En versiones anteriores, mantener un modelo de transcripción local activo en segundo plano consumía aproximadamente 900MB de RAM, y tenías que esperar a que el modelo procesara todo el clip de audio después de soltar la tecla del atajo. Hex 3.0 reduce ese consumo de memoria a 160MB y transcribe tu voz mediante un flujo en tiempo real mientras sigues manteniendo presionada la tecla de acceso rápido. Para cuando sueltas la tecla, la inferencia está casi terminada, por lo que el texto final se pega en la posición activa del cursor en unos 100ms.
Dado que Hex ahora abarca macOS, Windows y Linux con diferentes motores de GPU, obtener ese tiempo de respuesta de 100ms depende en gran medida de tu hardware, servidor gráfico y selección de modelo. A continuación, verás cómo funciona el motor de streaming en cada sistema operativo, cómo configurar el pulido opcional previo al pegado y cómo solucionar los inconvenientes de controladores y entornos de escritorio que encontré durante las pruebas.
En esta página
Cómo funciona el flujo de streaming Parakeet de 160MB
La mayoría de las interfaces locales de Whisper funcionan como una grabadora de voz combinada con un convertidor por lotes: presionas un atajo, hablas durante diez segundos, sueltas el atajo y luego te quedas mirando un indicador de carga durante dos o tres segundos mientras la GPU codifica el búfer de audio de principio a fin. Ese retraso es aceptable para notas largas, pero rompe tu ritmo cuando estás dictando comandos rápidos de terminal, respuestas en Slack o frases cortas en un documento.
Hex 3.0 evita esa pausa enviando fragmentos de audio de forma continua al modelo Parakeet Unified en inglés mientras mantienes presionada la tecla del atajo. Como la GPU procesa cada frase a medida que la pronuncias, al soltar la tecla solo hace falta vaciar la última sílaba e inyectar la cadena de texto en el portapapeles del sistema. En una Mac con Apple Silicon o en una PC con Windows y una GPU compatible con Vulkan, el texto aparece en el cuadro de entrada casi en el mismo instante en que tu dedo deja la tecla.
Un detalle que suele tomar por sorpresa al principio es que Hex no escribe las palabras una por una en tu aplicación mientras hablas. De forma predeterminada, la pequeña píldora flotante del HUD solo muestra un estado de grabación y un breve estado de transcripción, reteniendo el texto hasta que sueltas la tecla de acceso rápido y se pega el segmento completo de una sola vez. Si dictas ideas más largas y no quieres esperar hasta el final para saber si el modelo entendió mal un término técnico en tu primera oración, puedes activar una vista previa experimental en tiempo real desde la línea de comandos:
hex experiments enable live-text
Después de ejecutar ese comando, reinicia el servicio en segundo plano de Hex (en Linux, la unidad de systemd solo lee el archivo de experimentos al iniciarse). Una vez activado, Hex muestra una única línea de texto debajo de la píldora del HUD que permite hacer clic a través de ella y se actualiza en tiempo real mientras hablas. Esta vista previa no se guarda en tu historial de dictado ni afecta a tu cursor hasta que sueltas la tecla. En mis pruebas con el streaming de Parakeet Unified, la línea en vivo sigue con precisión las oraciones cortas, aunque muestra la salida en bruto sin la limpieza final de puntuación ni mayúsculas. Si te extiendes durante un párrafo largo sin soltar la tecla, la línea única de vista previa también puede superar el ancho de los límites de la superposición y recortar las palabras más recientes en el borde de la pantalla hasta que el texto final limpio se pegue en tu aplicación.
Motores de GPU y CPU en Mac, Windows y Linux
Hex 3.0 no utiliza la misma ruta de inferencia en todos los equipos. Dependiendo de tu sistema operativo y de la arquitectura del procesador, dirige los modelos a través de diferentes motores de hardware:
- macOS (solo Apple Silicon): Utiliza aceleración por GPU con Metal estricto mediante
transcribe.cppen equipos Mac de la serie M con macOS 15 o posterior. - Windows x64: Utiliza aceleración por GPU con Vulkan para ejecutar el streaming en inglés de Parakeet Unified en tarjetas gráficas dedicadas e integradas.
- Windows ARM64: Ejecuta la transcripción en la CPU, omitiendo la ruta de GPU con Vulkan.
- Linux x64: Utiliza aceleración por GPU con Vulkan de forma predeterminada, con una ruta alternativa en CPU para controladores gráficos no compatibles o configuraciones sin monitor (headless).
Por qué las Mac con Intel están bloqueadas y cómo quitar el punto naranja del micrófono en macOS
Si intentas descargar Hex en una Mac con procesador Intel —incluso en una MacBook Pro de 2018 o 2019 equipada con una GPU dedicada Radeon Pro—, el instalador se negará a ejecutarse y el sitio web mostrará en gris el requisito de Apple Silicon. Las compilaciones oficiales para macOS en DMG, ZIP y el cask de Homebrew están compiladas exclusivamente para macos-arm64. Internamente, Hex en macOS requiere que un modelo se cargue en Metal estricto antes de marcarlo como utilizable, y no existe un binario precompilado alternativo para CPU en x86_64-apple-darwin. A menos que hagas una bifurcación (fork) del repositorio de GitHub, compiles tú mismo un destino para Intel y modifiques el cargador de modelos para aceptar un motor de CPU en lugar de Metal estricto, Hex requiere una Mac de la serie M.
En las Mac con Apple Silicon donde Hex se ejecuta de forma nativa, lo primero que notarás tras abrir la aplicación es que el indicador naranja del micrófono de macOS en la barra de menús permanece encendido todo el tiempo, incluso cuando estás inactivo y sin dictar. Hex no está grabando tu habitación en secreto; hace esto porque su configuración de entrada de audio mantiene abierto el flujo del micrófono de forma predeterminada para que, al presionar la tecla de acceso rápido, se capture tu primera sílaba sin esperar a que CoreAudio inicialice el dispositivo.
Si no quieres que el punto naranja de privacidad brille en tu barra de menús todo el día, abre Hex y ve a Configuración → General → Dictado → Avanzado → Modo de micrófono, y luego cambia la opción de Mantener listo (rápido) a Liberar cuando esté inactivo. Tan pronto como cambies a Liberar cuando esté inactivo, el indicador naranja desaparecerá siempre que no estés manteniendo presionada la tecla del atajo. La contrapartida es una leve pausa de inicialización al presionar la tecla de acceso rápido, por lo que deberás esperar una fracción de segundo antes de hablar para evitar que se recorte tu primera palabra.
Solución de problemas con Wayland en Linux, bloqueos de GPU Intel y el HUD en Windows 11
En Windows 11 y Linux, Hex depende de Vulkan tanto para la superposición de su interfaz Rune UI como para la inferencia de modelos en GPU, mientras que utiliza portales de escritorio o utilidades del portapapeles para inyectar el texto. Esa combinación funciona de inmediato en configuraciones estándar, pero varias combinaciones de hardware y entornos de escritorio requieren ajustes manuales.
Bloqueos de GPU integrada Intel con Vulkan en Linux
Si ejecutas Linux en una computadora portátil con gráficos integrados Intel Arc (como un procesador Core Ultra que utilice el controlador de kernel i915 y vulkan-intel de Mesa) y cambias de Parakeet a modelos más pesados como qwen3_asr06_b o whisper_large_v3_turbo, la inferencia con Vulkan puede bloquear la GPU. Cuando esto ocurre, los registros del kernel arrojan un bloqueo de GPU en i915 (context reset due to GPU hang), y Hex registra una advertencia indicando que LocalTranscriber::load no pudo cargar el modelo de transcripción en la GPU antes de recurrir a una sesión de CPU ggml de 8 hilos. Como tienes que esperar a que el contexto de la GPU se bloquee y se reinicie antes de que siquiera comience la transcripción en la CPU, un clip de voz de seis segundos puede tardar más de 90 segundos en completarse, lo que hace que la ruta de la GPU sea casi 20 veces más lenta que la inferencia pura en CPU.
Si intentas desactivar Vulkan por completo configurando VK_ICD_FILENAMES con una ruta de archivo ficticia, la transcripción en la CPU baja a menos de cinco segundos, pero la ventana de Hex y la superposición del HUD no se inician porque el kit de herramientas Rune UI aún necesita una superficie de GPU para dibujarse. Para mantener el HUD funcionando mientras fuerzas la transcripción en la CPU, tienes dos opciones. En las compilaciones más recientes que separan el renderizado de la interfaz del motor de voz, ve a Configuración → General → Avanzado → Dictado → Motor de voz y selecciona cpu, o ejecuta:
hex settings set transcription_device cpu
Si estás en una compilación donde ese ajuste aún no está disponible, instala vulkan-swrast (el rasterizador por software lavapipe de Mesa) y agrega Environment="VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/lvp_icd.json" a tu servicio de usuario de Hex. Eso le proporciona al HUD una superficie funcional para renderizarse mientras mantiene la inferencia del modelo fuera del controlador Intel i915 que se bloquea, reduciendo nuevamente los clips de seis segundos a unos cinco segundos.
Atajos en Linux Wayland, pegado de texto y el indicador naranja de GNOME
Ejecutar Hex en Linux con Wayland requiere wl-clipboard (wl-copy) para pegar el texto transcrito en tus ventanas. Hex no verifica la presencia de wl-clipboard al iniciarse, por lo que, si no lo tienes instalado, todo parecerá normal hasta que tu primer dictado falle al pegarse. Instala primero wl-clipboard mediante tu gestor de paquetes.
En Ubuntu 24.04 con GNOME 46, también notarás que mantener presionado el atajo predeterminado Ctrl+Space no hace nada, aunque la ventana principal de Hex indique Hold Ctrl+Space to dictate. Si revisas los registros de inicio, verás No such interface "org.freedesktop.portal.GlobalShortcuts". Debido a que xdg-desktop-portal-gnome 46 no implementa el portal GlobalShortcuts, Hex no puede capturar las pulsaciones de teclas directamente desde el compositor. Para usar Hex en GNOME 46, abre en tu sistema Configuración de GNOME → Teclado → Atajos de teclado → Atajos personalizados y asigna un atajo para ejecutar:
hex dictation toggle
Ten en cuenta que los atajos personalizados de GNOME solo se activan al presionar la tecla en lugar de rastrear los eventos de presionar y soltar, por lo que esto convierte tu tecla de acceso rápido en un interruptor de presionar para iniciar y presionar para detener, en lugar de mantener presionado para hablar. Las compilaciones más recientes también incluyen un botón auxiliar add gnome keyboard shortcuts en Configuración → Atajos de escritorio para crear esta regla por ti.
Si utilizas un escritorio GNOME más reciente (como GNOME 50 o 51 en Arch o NixOS) donde GlobalShortcuts funciona, es posible que notes otros dos comportamientos del portal. Primero, si cambias tu tecla de atajo dentro de Hex y la nueva tecla no se activa, ve a Configuración de GNOME → Aplicaciones → Hex → Atajos globales, haz clic en Eliminar todos los atajos y luego desactiva y vuelve a activar el atajo dentro de Hex para que GNOME te pida autorizar la nueva asignación. Segundo, después de dictar y pegar texto en Wayland, el indicador naranja de control remoto o uso compartido de pantalla de GNOME permanece encendido en la barra superior. Hex utiliza una sesión RemoteDesktop de WaylandKeys::Portal para enviar la pulsación de tecla de pegado y, si el portal de escritorio no devuelve un token de restauración válido, Hex mantiene intencionalmente la sesión abierta en segundo plano para no mostrarte un cuadro de diálogo de permisos cada vez que dictes.
Cortes silenciosos por volumen bajo del micrófono y ausencia de la píldora del HUD
Otro problema que encontré en Linux con PipeWire y micrófonos USB es hablar durante cinco o diez segundos, soltar la tecla y que no se pegue nada, sin ningún mensaje de error en la interfaz. Si ejecutas hex dictation stop --print en la terminal y finaliza con el código 4 junto con un mensaje de registro que dice discarded dictation without detected speech, la ganancia de entrada de tu micrófono es demasiado baja.
Cuando la entrada de tu micrófono se sitúa alrededor del 35% al 40% de volumen (registrando entre -47 dBFS y -50 dBFS), el detector de actividad de voz de Hex asume que permaneciste en silencio y descarta el búfer de audio antes de que llegue al modelo de transcripción. Subir el volumen de tu fuente de audio predeterminada al 75% soluciona esto de inmediato. En sistemas con PipeWire / WirePlumber, ejecuta:
wpctl set-volume @DEFAULT_AUDIO_SOURCE@ 0.75
Si utilizas auriculares Bluetooth que dejan de transcribir de forma aleatoria, comprueba también que la fuente de entrada no esté silenciada en el nivel de PulseAudio/PipeWire (pactl set-source-mute @DEFAULT_SOURCE@ 0), lo que provoca que Hex grabe un silencio de -120 dBFS y descarte el clip.
Por último, si escuchas los tonos de audio de inicio y detención al presionar tu atajo en Windows 11 o en un compositor minimalista de Wayland como Hyprland, pero la píldora flotante del HUD nunca aparece en pantalla, el ciclo de dictado sigue funcionando en segundo plano. En compositores Wayland puros sin compatibilidad con layer-shell y con XWayland desactivado, la superposición de Rune no puede crear una superficie de ventana, aunque el texto se seguirá pegando cuando sueltes la tecla. En computadoras portátiles con Windows 11 y gráficos híbridos NVIDIA e integrados, las primeras compilaciones 3.x no configuraban el atributo de ventana en capas necesario para las superposiciones que permiten hacer clic a través de ellas, dejando el HUD invisible hasta actualizar a la versión más reciente.
Pulido opcional previo al pegado con OpenCode
El streaming de Parakeet Unified directamente en tu ventana activa te ofrece la respuesta más rápida posible, pero la transcripción de voz en bruto sigue reflejando exactamente cómo hablas. Si haces una pausa a mitad de una idea, repites una palabra o dictas una lista preliminar de viñetas, la transcripción sin procesar pegará esos tropiezos literalmente.
Para resolver esto sin enviar tu audio a la nube, Hex 3.0 incluye una integración opcional con OpenCode que pule el texto transcrito justo antes de pegarlo en tu aplicación. Cuando activas este paso, Hex sigue ejecutando el modelo acústico local para convertir tu voz en texto, pero en lugar de activar el pegado del portapapeles inmediatamente al soltar la tecla, dirige la transcripción a través de OpenCode para corregir la gramática, eliminar muletillas o dar formato al texto según tu contexto de destino.
Dado que agregar una pasada de limpieza con un LLM entre el momento de soltar el atajo y pegar el resultado introduce una latencia adicional más allá del tiempo de streaming de 100ms de Parakeet, lo mejor es usarlo de forma situacional. Cuando dicto comandos de terminal, nombres de variables o mensajes de chat de una sola línea, mantengo desactivado el pulido previo al pegado para que el texto aparezca al instante. Cuando redacto un correo electrónico de varias oraciones o la descripción de un pull request en la que de otro modo dedicaría quince segundos a corregir la puntuación a mano, activar la pasada de OpenCode ahorra tiempo en general.
Hex 3.0 frente al dictado integrado del sistema operativo y MacWhisper
Elegir entre Hex 3.0, la escritura por voz integrada en tu sistema operativo y una suite de transcripción de escritorio dedicada como MacWhisper depende de si priorizas la inyección instantánea en el cursor mediante pulsar para hablar, la respuesta visual palabra por palabra en vivo o la flexibilidad para varios idiomas.
El Dictado integrado de macOS y la Escritura por voz de Windows 11 (Win + H) tienen una clara ventaja sobre la vista predeterminada de Hex: insertan las palabras directamente en tu documento una por una a medida que hablas, por lo que puedes ver cómo se forma la oración dentro de tu editor de texto. Sin embargo, la Escritura por voz de Windows requiere una conexión activa a internet con los servidores de Azure Speech de Microsoft, y ambas herramientas integradas del sistema operativo apagan automáticamente el micrófono si haces una pausa de unos segundos para pensar. Hex funciona 100% sin conexión, nunca agota el tiempo de espera mientras tu dedo mantenga presionada la tecla de acceso rápido y pega el bloque terminado en 100ms sin latencia de la nube.
En comparación con MacWhisper, ambas herramientas resuelven diferentes partes del flujo de trabajo de transcripción local. MacWhisper destaca cuando quieres arrastrar y soltar archivos de audio grabados, capturar el audio del sistema y de reuniones, o explorar archivos de transcripciones con búsqueda; y si buscas otras formas de capturar reuniones o el audio del escritorio en macOS, puedes consultar mi comparativa de aplicaciones de subtítulos en vivo para Mac. Aunque MacWhisper también incluye un modo de dictado global en macOS, Hex está diseñado exclusivamente como una utilidad ligera multiplataforma de pulsar para hablar. Con un consumo de 160MB de RAM mediante el streaming de Parakeet Unified, Hex no estorba en computadoras portátiles de 8GB y 16GB donde mantener un modelo grande de Whisper cargado en memoria todo el día generaría presión sobre la memoria de intercambio (swap).
Donde sí debes prestar atención en Hex 3.0 es en el dictado en varios idiomas. La configuración ultrarrápida de streaming de 160MB está diseñada en torno a Parakeet Unified en inglés. Si dictas en alemán, polaco, vietnamita, español u otros idiomas, tienes que abrir Configuración → General → Modelo de voz y descargar un modelo multilingüe del catálogo, que incluye Parakeet v3, Whisper Large v3 Turbo, Qwen3-ASR, Cohere y NVIDIA Nemotron 3.5 ASR.
Si trabajas en más de un idioma, actualmente existen tres limitaciones prácticas en Hex. Primero, el menú desplegable de idiomas dentro de Hex utiliza un componente de interfaz personalizado que no muestra una barra de desplazamiento. Cuando seleccionas Whisper Large v3 Turbo —que admite alrededor de 40 idiomas—, los idiomas que están más abajo en la lista, como el alemán (de), parecen no ser compatibles en absoluto a menos que coloques el cursor sobre el menú desplegable abierto y te desplaces hacia abajo con la rueda del ratón o el trackpad. Segundo, Parakeet v3 ignora por completo el selector manual de idioma y depende de la detección automática de idioma a partir de tu audio, lo cual funciona bien para oraciones largas, pero ocasionalmente puede adivinar el idioma equivocado en frases cortas de dos palabras si alternas entre idiomas como el inglés y el polaco.
Tercero, Hex procesa cada pulsación de la tecla de acceso rápido como un único clip de audio y no puede cambiar de idioma a mitad de una oración. Cambiar manualmente el idioma en la configuración vuelve a cargar el modelo, por lo que, si alternas regularmente entre dos idiomas en una Mac, el mejor flujo de trabajo es activar Labs → Cambiar modelo con el idioma del teclado. Eso vincula cada fuente de entrada de teclado de macOS con un par específico de modelo descargado e idioma; cada vez que presionas tu atajo de macOS para cambiar la distribución del teclado, Hex intercambia automáticamente el modelo de voz activo en segundo plano en unos 300ms.