Offline AI Voice Assistant: Win+H Opens the Chat
A ThinkPad voice assistant fixes wake-word clipping and adds a Win+H command chat. See what works, what remains untested, and why this design matters.

When Win+H Opens a Local AI Assistant Chat
A voice assistant can break before it understands a single word. The microphone might be clipping, the wake phrase might sound different to the model than it does to you, or the assistant may hear you but have no useful way to act. These aren't separate issues - they're all part of the same interaction pipeline, and any one of them can make the whole thing feel unreliable.
In a development note from a ThinkPad, Savindu Thathsara describes working through two of those problems while building Hearthlen, an AI operating system project. At first, the microphone signal was so loud that the wake phrase couldn't be recognized. After lowering the capture level, the listener began detecting it. Then a keyboard shortcut, Win+H, opened a chat window where typed commands followed the same path as voice requests.
This is a small implementation step, not proof of a finished assistant. Still, it's a helpful snapshot of what actually goes into voice interfaces: signal quality, recognition behavior, shared command handling, and the gap between a successful test and something you can trust in a real room with a person speaking.
The microphone problem started before speech recognition
The first failure looked like a wake-word problem: saying "hey Hearthlen" didn't wake the listener. But the key clue came from the audio level. A two-second sample peaked at 32768, which the note says is the top of a 16-bit sample. In other words, the input was hitting full scale and clipping. The room noise wasn't just "loud" - it was getting flattened before the listener ever had a clean signal to analyze.
That distinction matters. If the audio is already distorted at capture time, swapping the speech model or tweaking the wake phrase usually won't fix the root issue. The system can't reliably match a phrase when the useful acoustic details are gone.
Gain is not the same as useful volume
The capture slider started at 30 dB. The listener was then adjusted to turn the slider down when it was above 60%. After that change, the reported level was 5.25 dB, and the first frames peaked at 977.
Those numbers apply to this specific setup. Slider percentages and decibel values can map differently across devices, drivers, and operating systems. What matters here is the direction of the change: the input was no longer slamming into the reported maximum, and the listener could work with a less saturated signal.
This is the familiar trade-off. More gain can make a quiet speaker easier to hear, but it can also amplify background noise and push speech into clipping. Less gain can preserve detail, but it can also leave a distant or soft speaker below the level needed for detection. A working system needs a way to find a usable range, not treat "louder" as automatically "better."
In real projects, it's worth checking the microphone path on its own before you start tuning recognition. At minimum: measure whether the input is clipping, test at a realistic speaking distance, and listen to a recorded sample. A meter can warn you, but it can't tell you whether the capture sounds natural - or whether the speaker is too quiet for the room.
The useful lesson is about diagnostics
The point of this fix isn't the exact slider value. It's that the investigation moved upstream. Instead of assuming the wake-word model was the problem, the builder checked the captured audio and found an issue in the signal path.
That approach applies anywhere. When a system gets a bad result, check the input quality before replacing the component that consumes it. Bad audio can look like bad recognition. Bad sensor data can look like bad logic. A pipeline is only as reliable as what goes into it.
Wake words are a sound-matching problem
Once the capture level was reduced, the phrase still surfaced a different issue. The English model didn't consistently interpret the invented name "Hearthlen" as that exact spelling. With a clear reading, it reportedly heard alternatives like "hey hearth" and "hard one." The listener seemed to wait for those recognized forms, not the name as written.
That's not surprising. A speech model works from sound, not spelling. A product name can seem obvious to its creator while still being acoustically close to common words - or simply unfamiliar to the model. The wake phrase has to work as spoken language, not as a brand name on a screen.
Test the phrase the model hears
The note says the phrase "hey Hearthlen" was played through speakers, and the wake event was logged as "hey hearthlen." That's evidence the phrase can be detected in that test, but it's not the same as showing that a person in the room can reliably wake the system.
Speaker playback and live speech don't behave the same way. A recording can have consistent volume and pronunciation, while a person changes pace, distance, accent, and emphasis. The microphone also picks up the room, not just the words. A wake phrase that works with a speaker next to the ThinkPad might fail when someone speaks across a desk - or over background noise.
A practical wake-word test should separate those variables:
- Try a few natural pronunciations, not just a carefully enunciated version.
- Test from different distances and positions.
- Include normal room noise (a fan, quiet conversation).
- Log false activations as well as missed activations.
- Track whether the phrase is recognized correctly or just triggers the listener.
That last point matters. A wake event tells you the detector crossed its threshold; it doesn't automatically prove the assistant understood what came next.
Wake-word quality is a product decision
There's a trade-off between responsiveness and false activations. Tune the detector to react to faint or imperfect phrases, and it can also wake up on similar sounds in conversation. Tune it to avoid false positives, and users may need to speak more clearly or repeat themselves. Neither choice is automatically right - the best balance depends on where the assistant runs and what it does after waking.
For a desktop helper that only adjusts brightness or takes a screenshot, a false activation is annoying. For a system that can send messages, access sensitive files, or make purchases, the stakes are higher. In the latter case, wake-word detection shouldn't be treated as the final authorization step.
The Hearthlen note doesn't describe a security model or provide false-positive rates. It's worth keeping that clear. Playback success is a development milestone, but safe and dependable wake behavior still needs testing with real people in realistic conditions.
Why a keyboard shortcut changes the interface
The next step in the note is a window titled Hearthlen chat, opened with Win+H. A line typed into that window uses the same command path as a voice request. When asked "what can you do," the chat returned a list of available capabilities: keyboard and mouse control, volume, brightness, file search, reminders, and screenshots.
That shared command path is a good design choice. If typed input and spoken input each have their own command implementations, they can drift over time. One path might support an action the other doesn't; error handling can differ; fixes may have to be made twice. Using one command layer gives both input methods a better shot at behaving the same.
A chat window is more than a fallback
A keyboard interface also makes the system easier to inspect. You can see what was submitted, review the response, and test an action without first debugging the microphone. That helps during development - but it also helps real users when speaking is inconvenient: in a shared office, on a call, in a quiet room, or when the assistant mishears a phrase.
The note also mentions that a face in the corner keeps moving while the response is spoken, and that the pointer moved during the interaction. Those details suggest Hearthlen is being built as a visible desktop presence, not just a voice endpoint. The interface can show the assistant is active while it speaks or interacts with the desktop.
Keeping that feedback visible is useful. If an assistant can operate the mouse or keyboard, users need to know when it received a request and whether it's acting on it. But animation isn't the same as clear status. A good interface should separate listening, processing, asking for clarification, and carrying out an action. The source note doesn't spell out all of those states, so they should be treated as design questions, not confirmed features.
One command layer, several ways to communicate
The broader pattern is straightforward: separate how a user gives an instruction from the logic that interprets and performs it. Voice and text become different inputs to the same command set.
That doesn't mean every input should trigger every action without extra checks. Asking to change brightness is different from asking to delete a file. The command layer needs to understand not only what actions exist, but which ones are safe to run immediately and which ones need user confirmation.
There's also a Windows detail to handle. On standard setups, Win+H is tied to Windows voice typing. A custom app using that shortcut has to account for the existing binding and what users expect. The note confirms the shortcut opens Hearthlen chat in this setup, but it doesn't explain how the shortcut is registered or whether Windows' default behavior changed. For a finished product, shortcut conflicts should be handled on purpose - not left to chance.
What this prototype proves - and what it does not
The note shows a small, coherent sequence: a clipped microphone signal was identified, capture level was reduced, a wake phrase was detected in playback, and a keyboard chat window was connected to the same command path as voice. That's more useful than a feature list because it shows the specific work needed to make the interaction work.
It also has clear limits. The biggest remaining check is a person in the room saying the phrase, timed from the first sound to the greeting. In other words, the real-world voice test that matters most hasn't been completed in the details provided. There are no latency results, recognition accuracy numbers, false-activation measurements, or structured tests across microphones and room conditions.
The next test should follow the user's experience
A sensible next test isn't just "does the wake phrase work?" It's a small end-to-end run:
- A person speaks naturally from a realistic position.
- The listener detects the wake phrase without clipping or repeated prompting.
- The assistant acknowledges the wake event promptly.
- The user gives a command, by voice or in the chat window.
- The system either performs the action or clearly explains what it needs.
- The user can tell what happened and correct an error.
Track timing at each stage. "Time from first sound to greeting" is a good start, but it should be paired with missed wakes, false activations, and command success. A fast greeting isn't a win if the assistant wakes up wrongly or keeps failing to finish the requested task.
The command list also needs capability-specific testing. "Find a file" can mean searching by name, searching file contents, or locating a recent document. "Control keyboard and mouse" is broad enough that you'll want clear boundaries. A visible list of supported actions helps, but each action should produce a predictable result and a sensible confirmation policy.
Offline claims need operational detail
Hearthlen is described as part of an offline AI operating system project. Offline operation can matter for privacy, resilience, and connectivity costs - but the note doesn't say which parts run locally or whether every capability works without a network connection. It would be premature to infer that from the description alone.
If you're evaluating an offline assistant, ask which stages are local: wake-word detection, speech recognition, language-model processing, and the action itself. A system can handle one stage locally and still send another stage to a remote service. That architecture might be reasonable - but it should be explicit, especially when the assistant can search files or control the desktop.
This is where a promising prototype becomes an operational product. The question isn't just whether the model can respond. It's whether the full system behaves predictably, makes its limits visible, and gives the user control over sensitive actions.
Conclusion
The useful takeaway from this ThinkPad update isn't that a wake word now works perfectly. It's that the failure became easier to understand once the audio signal was inspected, and that text and voice were tied together through a shared command path.
That's a solid foundation for a desktop assistant. The remaining work is just as practical: test with a person speaking naturally, measure the full interaction, document what truly runs offline, and decide which actions require confirmation. A prototype becomes trustworthy through those checks - not through a longer list of features.