Hex 3.0 Local Voice Dictation: 160MB Parakeet GPU Streaming (Mac/Windows/Linux)
See how Hex 3.0 runs 160MB Parakeet GPU streaming voice dictation in 100ms on Mac, Windows, and Linux, plus fixes for Wayland, Intel GPUs, and multi-language models.
Summary
- Hex 3.0 is an open-source.
- Apple Silicon uses strict Metal, Windows x64 uses Vulkan for Parakeet Unified English GPU streaming, Windows ARM64 runs on CPU.
- Includes practical fixes for the macOS orange mic dot, Linux Wayland shortcuts, Intel Arc GPU hangs, low-volume VAD drops, and multi-language switching.
Hex is an open-source, Rust-based desktop voice dictation tool (anoma.ly/hex) that runs speech-to-text models locally on your computer. Instead of sending your microphone audio to a cloud server, it listens while you hold down a global keyboard shortcut and pastes the transcribed text straight into whatever code editor, browser tab, or terminal window currently has focus.
With the release of Hex 3.0, the app moved its default English dictation pipeline to a streaming GPU architecture powered by NVIDIA's Parakeet Unified model. In earlier versions, keeping a local transcription model hot in the background took roughly 900MB of RAM, and you had to wait for the model to process the entire audio clip after letting go of the shortcut key. Hex 3.0 cuts that memory footprint down to 160MB and transcribes your speech in a live stream while you are still holding the hotkey. By the time you release the key, inference is nearly finished, so the final text pastes into your active cursor position in about 100ms.
Because Hex now spans macOS, Windows, and Linux with different GPU backends, getting that 100ms response time depends heavily on your hardware, display server, and model selection. Below is how the streaming backend works on each operating system, how to configure optional pre-paste polishing, and how to fix the driver and desktop quirks I ran into while testing it.
On this page
How the 160MB Parakeet Streaming Pipeline Works
Most local Whisper wrappers work like a voice recorder paired with a batch converter: you press a shortcut, speak for ten seconds, release the shortcut, and then stare at a spinner for two or three seconds while the GPU encodes the audio buffer from start to finish. That delay is fine for long notes, but it breaks your rhythm when you are dictating quick terminal commands, Slack replies, or short sentences into a document.
Hex 3.0 avoids that pause by feeding audio chunks into the Parakeet Unified English model continuously while the shortcut key is held down. Because the GPU processes each phrase as you say it, letting go of the key only requires flushing the final syllable and injecting the string into the system clipboard. On an Apple Silicon Mac or a Windows PC with a capable Vulkan GPU, the text lands in the input box almost the instant your finger leaves the key.
One thing that catches people off guard at first is that Hex does not type words into your application one by one while you speak. By default, the small floating HUD pill only shows a recording state and a brief transcribing state, holding back the text until you release the hotkey and paste the complete segment at once. If you dictate longer thoughts and hate waiting until the end to find out whether the model misheard a technical term in your first sentence, you can turn on an experimental live preview from the command line:
hex experiments enable live-text
After running that command, restart the Hex background service (on Linux, the systemd unit only reads the experiments file at startup). Once enabled, Hex renders a single click-through line of text right below the HUD pill that updates in real time while you talk. This preview does not get saved to your dictation history and does not touch your cursor until you release the key. In my testing with Parakeet Unified streaming, the live line tracks short sentences accurately, though it displays raw streaming output without final punctuation or capitalization cleanup. If you ramble for a long paragraph without releasing the key, the single preview line can also grow wider than the overlay bounds and clip the newest words off the edge of the screen until the final cleaned text pastes into your app.
GPU and CPU Backends Across Mac, Windows, and Linux
Hex 3.0 does not use the same inference path on every machine. Depending on your operating system and processor architecture, it routes models through different hardware backends:
- macOS (Apple Silicon only): Uses strict Metal GPU acceleration via
transcribe.cppon M-series Macs running macOS 15 or newer. - Windows x64: Uses Vulkan GPU acceleration to run Parakeet Unified English streaming on discrete and integrated graphics cards.
- Windows ARM64: Runs transcription on the CPU, bypassing the Vulkan GPU path.
- Linux x64: Uses Vulkan GPU acceleration by default, with a CPU fallback path for unsupported graphics drivers or headless setups.
Why Intel Macs Are Blocked and How to Fix the Orange Mic Dot on macOS
If you try to download Hex on an Intel-based Mac—even a 2018 or 2019 MacBook Pro equipped with a discrete Radeon Pro GPU—the installer will refuse to run and the website will show a greyed-out Apple Silicon requirement. The official macOS DMG, ZIP, and Homebrew cask builds are compiled exclusively for macos-arm64. Under the hood, Hex on macOS requires a model to load on strict Metal before it marks the model as usable, and there is no prebuilt CPU fallback binary for x86_64-apple-darwin. Unless you fork the GitHub repository, compile an Intel target yourself, and patch the model loader to accept a CPU backend instead of strict Metal, Hex requires an M-series Mac.
On Apple Silicon Macs where Hex runs natively, the first thing you will notice after launching the app is that the macOS orange microphone indicator in the menu bar stays lit full-time, even when you are sitting idle and not dictating. Hex is not secretly recording your room; it does this because its audio input setting defaults to keeping the microphone stream open so that pressing the hotkey captures your very first syllable without waiting for CoreAudio to initialize the device.
If you do not want the orange privacy dot glowing in your menu bar all day, open Hex and go to Settings → General → Dictation → Advanced → Microphone mode, then change the setting from Keep ready (fast) to Release when idle. As soon as you switch to Release when idle, the orange indicator disappears whenever you are not holding the shortcut key. The trade-off is a slight initialization pause when you press the hotkey, so you need to wait a fraction of a second before speaking to avoid clipping your first word.
Fixing Linux Wayland, Intel GPU Hangs, and Windows 11 HUD Issues
On Windows 11 and Linux, Hex relies on Vulkan for both its Rune UI overlay and GPU model inference, while using desktop portals or clipboard utilities to inject text. That combination works out of the box on standard setups, but several hardware and desktop environment combinations need manual adjustments.
Intel Integrated GPU Hangs on Linux Vulkan
If you run Linux on a laptop with Intel Arc integrated graphics (such as a Core Ultra processor using the i915 kernel driver and Mesa vulkan-intel) and switch from Parakeet to heavier models like qwen3_asr06_b or whisper_large_v3_turbo, Vulkan inference can lock up the GPU. When this happens, kernel logs throw an i915 GPU hang (context reset due to GPU hang), and Hex logs a warning that LocalTranscriber::load could not load the transcription model on the GPU before falling back to an 8-thread ggml CPU session. Because you have to wait for the GPU context to hang and reset before CPU transcription even starts, a six-second voice clip can take over 90 seconds to finish—making the GPU path nearly 20 times slower than pure CPU inference.
If you try to disable Vulkan completely by setting VK_ICD_FILENAMES to a dummy file path, CPU transcription drops under five seconds, but the Hex window and HUD overlay fail to launch because the Rune UI toolkit still needs a GPU surface to draw itself. To keep the HUD working while forcing transcription onto the CPU, you have two options. On newer builds that separate UI rendering from the speech engine, go to Settings → General → Advanced → Dictation → Speech engine and select cpu, or run:
hex settings set transcription_device cpu
If you are on a build where that setting is not yet exposed, install vulkan-swrast (Mesa's software lavapipe rasterizer) and add Environment="VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/lvp_icd.json" to your Hex user service. That gives the HUD a working surface to render on while keeping model inference off the hanging Intel i915 driver, bringing six-second clips back down to around five seconds.
Linux Wayland Shortcuts, Pasting, and the GNOME Orange Indicator
Running Hex on Linux with Wayland requires wl-clipboard (wl-copy) to paste transcribed text into your windows. Hex does not check for wl-clipboard at launch, so if you do not have it installed, everything will look normal until your very first dictation fails to paste. Install wl-clipboard through your package manager first.
On Ubuntu 24.04 running GNOME 46, you will also find that holding down the default Ctrl+Space hotkey does nothing, even though the Hex main window says Hold Ctrl+Space to dictate. If you check the startup logs, you will see No such interface "org.freedesktop.portal.GlobalShortcuts". Because xdg-desktop-portal-gnome 46 does not implement the GlobalShortcuts portal, Hex cannot grab keystrokes directly from the compositor. To use Hex on GNOME 46, open your system GNOME Settings → Keyboard → Keyboard Shortcuts → Custom Shortcuts and bind a shortcut to run:
hex dictation toggle
Keep in mind that GNOME custom shortcuts only fire on key press rather than tracking key-down and key-up events, so this turns your hotkey into a press-to-start, press-to-stop toggle rather than hold-to-talk. Newer builds also include an add gnome keyboard shortcuts helper button under Settings → Desktop shortcuts to write this rule for you.
If you are running a newer GNOME desktop (such as GNOME 50 or 51 on Arch or NixOS) where GlobalShortcuts works, you might notice two other portal behaviors. First, if you change your shortcut key inside Hex and the new key refuses to trigger, go to GNOME Settings → Apps → Hex → Global Shortcuts, click Remove All Shortcuts, and then toggle the shortcut off and back on inside Hex so GNOME prompts you to authorize the new binding. Second, after you dictate and paste text on Wayland, GNOME's orange remote-control / screen-sharing indicator stays lit in the top bar. Hex uses a WaylandKeys::Portal RemoteDesktop session to send the paste keystroke, and if the desktop portal does not hand back a valid restore token, Hex intentionally keeps the session open in the background so you are not spammed with a permission dialog every single time you dictate.
Silent Drops from Low Mic Volume and Missing HUD Pills
Another issue I ran into on Linux with PipeWire and USB microphones is speaking for five or ten seconds, releasing the key, and getting nothing pasted—without any error message in the UI. If you run hex dictation stop --print in the terminal and it exits with code 4 alongside a log message reading discarded dictation without detected speech, your microphone input gain is too low.
When your mic input sits around 35% to 40% volume (registering around -47 dBFS to -50 dBFS), Hex's voice activity detector assumes you stayed silent and throws the audio buffer away before it ever reaches the transcription model. Raising your default audio source volume to 75% fixes this immediately. On PipeWire / WirePlumber systems, run:
wpctl set-volume @DEFAULT_AUDIO_SOURCE@ 0.75
If you are using a Bluetooth headset that randomly stops transcribing, also check that the input source is not muted at the PulseAudio/PipeWire level (pactl set-source-mute @DEFAULT_SOURCE@ 0), which causes Hex to record -120 dBFS silence and discard the clip.
Finally, if you hear the start and stop audio chimes when pressing your shortcut on Windows 11 or a minimal Wayland compositor like Hyprland, but the floating HUD pill never appears on screen, the dictation loop is still working in the background. On pure Wayland compositors without layer-shell support and with XWayland disabled, the Rune overlay cannot create a window surface, though text will still paste when you release the key. On Windows 11 laptops with hybrid NVIDIA and integrated graphics, early 3.x builds failed to set the required layered-window attribute for click-through overlays, leaving the HUD invisible until updated to the latest release.
Optional Pre-Paste Polishing with OpenCode
Streaming Parakeet Unified directly into your active window gives you the fastest possible turnaround, but raw speech transcription still mirrors exactly how you talk. If you pause mid-thought, repeat a word, or dictate a rough list of bullet points, the raw transcript will paste those stumbles verbatim.
To handle that without sending your audio to the cloud, Hex 3.0 includes an optional integration with OpenCode that polishes the transcribed text right before pasting it into your application. When you enable this step, Hex still runs the local acoustic model to convert your voice into text, but instead of triggering the clipboard paste immediately upon key release, it routes the transcript through OpenCode to clean up grammar, strip out filler words, or format the text for your target context.
Because adding an LLM cleanup pass between releasing the shortcut and pasting the output introduces extra latency beyond the 100ms Parakeet streaming time, it is best treated as a situational toggle. When I am dictating terminal commands, variable names, or one-line chat messages, I keep pre-paste polishing off so the text appears instantaneously. When I am drafting a multi-sentence email or a pull request description where I would otherwise spend fifteen seconds fixing punctuation by hand, turning on the OpenCode pass saves time overall.
Hex 3.0 vs. Built-In OS Dictation and MacWhisper
Choosing between Hex 3.0, your operating system's built-in voice typing, and a dedicated desktop transcription suite like MacWhisper comes down to whether you care more about instant push-to-talk cursor injection, live word-by-word visual feedback, or multi-language flexibility.
Built-in macOS Dictation and Windows 11 Voice Typing (Win + H) have one clear advantage over Hex's default view: they insert words directly into your document one by one as you speak, so you can watch the sentence form inside your text editor. However, Windows Voice Typing requires an active internet connection to Microsoft's Azure Speech servers, and both built-in OS tools automatically shut off their microphones if you pause for a few seconds to think. Hex runs 100% offline, never times out as long as your finger is holding the hotkey, and pastes the finished block in 100ms without cloud latency.
Compared to MacWhisper, the two tools solve different parts of the local transcription workflow. MacWhisper excels when you want to drag and drop recorded audio files, capture system and meeting audio, or browse searchable transcript archives—and if you are looking for other ways to capture meetings or desktop audio on macOS, you can check my comparison of live caption apps for Mac. While MacWhisper also includes a global dictation mode on macOS, Hex is built exclusively as a lightweight cross-platform push-to-talk utility. At 160MB of RAM with Parakeet Unified streaming, Hex stays out of the way on 8GB and 16GB laptops where keeping a large Whisper model loaded in memory all day would cause swap pressure.
Where you do need to pay attention in Hex 3.0 is multi-language dictation. The ultra-fast 160MB streaming setup is built around Parakeet Unified English. If you dictate in German, Polish, Vietnamese, Spanish, or other languages, you have to open Settings → General → Speech model and download a multilingual model from the catalog, which includes Parakeet v3, Whisper Large v3 Turbo, Qwen3-ASR, Cohere, and NVIDIA Nemotron 3.5 ASR.
If you work in more than one language, there are three practical boundaries in Hex right now. First, the language dropdown menu inside Hex uses a custom UI component that does not draw a scrollbar. When you select Whisper Large v3 Turbo—which supports around 40 languages—languages further down the list like German (de) look like they are completely unsupported unless you place your cursor over the open dropdown and scroll down with your mouse wheel or trackpad. Second, Parakeet v3 ignores the manual language picker altogether and relies on automatic language detection from your audio, which works well for longer sentences but can occasionally guess the wrong language on short two-word phrases if you switch between languages like English and Polish.
Third, Hex processes each hotkey press as a single audio clip and cannot switch languages mid-sentence. Manually changing the language in settings reloads the model, so if you regularly alternate between two languages on a Mac, the best workflow is enabling Labs → switch model with keyboard language. That links each macOS keyboard input source to a specific downloaded model and language pair; whenever you press your macOS shortcut to switch keyboard layouts, Hex automatically swaps the active speech model in the background in about 300ms.