How to Eliminate Meeting Note Typing with Whisper on an Offline, Secure PC
Overtime spent typing meeting notes for an hour in a developer room or a financial company's server room—where you can't even enter without a security badge—is truly painful. Applying for paid AI tools has zero chance of getting approved by the information security team, leaving manual typing as the only option. Using Handy, an open-source local speech recognition tool, can free you from this agony. This is an optimized setup that runs entirely on your laptop without sending a single byte of audio to an external server.
Completely Cutting Off Handy's Traffic with OS Firewall
Even though Handy is a program that runs purely locally, it is still suspicious from a security team's point of view. Since initial model downloads or update packets could go out, forcing network packet rejections at the OS level gives you peace of mind.
In a Windows environment, open the Command Prompt as an administrator and inject an outbound rule directly:
- Hold down the Shift key and right-click to open Command Prompt as an administrator.
- Execute the following statement:
netsh advfirewall firewall add rule name="Block Handy Outbound OUT" dir=out program="%LOCALAPPDATA%\Programs\handy\Handy.exe" action=block enable=yes.
- Enter
netsh advfirewall firewall show rule name="Block Handy Outbound OUT" to directly verify the blocked status.
If you use macOS, you can simply block Handy packets in Little Snitch 6 set to Always Deny based on Connections to Any Server. With this single step, the probability of generating traffic that violates security regulations becomes zero.
You also need to pay attention to shortcut key settings. Handy detects global input keys using Rust's rdev library, which frequently conflicts with default system shortcuts. Assigning Option + Space on macOS or Alt + Space on Windows as the Push-to-Talk key keeps things clean.
Increasing Technical Term Recognition to Reduce Typos and Editing Time
The OpenAI Whisper architecture uses a text decoder that predicts the next word based on previously generated words. If you fill the initial_prompt parameter of this decoder with frequently used terminology and project names within the 224-token limit, misrecognitions drop noticeably. This is why the Word Error Rate (WER) decreases without having to retrain the model.
- Open the menu in Handy's configuration screen: Settings -> Advanced -> Initial Prompt.
- Do not just list isolated words; write them including conversation context:
The following is an IT development and architecture meeting. Key terms: Kubernetes, CI/CD, React Native, Rust, Obsidian, AutoHotkey, PostgreSQL, gRPC, Docker, PR, Issue, Sprint.
- Restart the app to apply the decoder bias values.
You also need to prevent hallucinations where specific words are typed repeatedly in heavy background noise. Lowering the n_max_text_ctx value, which determines the text context window size, down to 128 and fixing the temperature value to 0.0 stops random text generation.
Piping Text Directly to an Obsidian Node the Moment Recording Stops
Handy's default behavior is to place the transcribed text into the clipboard. The problem is that code snippets you previously copied get overwritten. It is far better to append text directly with a timestamp into an Obsidian daily note (.md) file without passing through the clipboard.
In a Windows environment, running an AutoHotkey script in the background solves this.
- Install AutoHotkey v1.1 or higher and create a new file (ObsidianLogger.ahk).
- Write the save path (
VaultPath := "C:\Users\" . A_UserName . "\ObsidianVault\DailyNotes\" . CurrentDate . ".md") and the append file statement (FileAppend, %LogEntry%, %VaultPath%, UTF-8).
- Run the script and input audio using the Alt + Space shortcut in Handy.
Once you complete this automation setup, the 40+ minutes spent daily on typing and switching windows is slashed down to just around 3 minutes.
You can also set up control phrases so that Markdown formatting is applied automatically when spoken. For instance, saying "Insert Agenda" will be recognized by the script and converted to a ### 📌 Agenda header, while "Action Item" changes into a #### ✅ Action Item checkbox.
Compressed Model Settings to Lower Memory Footprint to 400MB
Handy uses GGML/GGUF formats based on whisper.cpp. Reducing FP16 model weights to the Q5_1 (5.5-bit) or Q4_1 (4-bit) level drops available RAM consumption down to a third.
For an M2 MacBook Air or a laptop with integrated graphics, the Whisper Small (Q5_1) model is appropriate. With a disk space requirement of 250MB and memory footprint around 350MB, it won't strain your running development environment. If you are in a desktop environment with a capable graphics card, you can load the Whisper Large-v3 (Q5_1) model to maximize recognition accuracy.
Here is the procedure for optimizing the memory footprint:
- Select Whisper Small (Q5_1) as the default always-on model.
- Raise the Silero VAD (Voice Activity Detection) Threshold value to 0.5 or above to prevent the inference engine from constantly running due to keyboard typing sounds.
- Navigate to the App Data path (
C:\Users\{username}\AppData\Roaming\com.pais.handy\models\) and wipe out all unused, GB-sized large model files (.bin).
If transcribing long meetings stalls due to thread bottlenecks, it is an issue with the physical core count settings. Do not match the thread count to hyper-threading-based logical core counts; match the thread count (n_threads) 1:1 with the actual physical core count to run cleanly without switching overhead.