About Handy
I built Handy because I broke a finger, was put into a cast and as a result my hand was out of commision. I tried some of the existing speech-to-text apps but none were open source and extensible. So Handy was made to fill this gap.
It’s probably the most simple speech to text app, it’s only function is to put whatever you say into a text box. Press and hold a keyboard shortcut, speak, and release. Your words appear wherever you were typing. It runs completely offline using Whisper, works across platforms, and doesn’t require subscriptions or cloud services.
Project Goals
Handy isn’t trying to be the best speech-to-text app. It’s trying to be the most forkable one.
Handy is a starting point for when you need accessibility features, want to experiment with voice computing, or just prefer tools you can actually own and modify. The project is designed to be tiny and extensible.
Take it, fork it, modify it, break it, fix it. Build something amazing and share it to everyone.
Under the Hood
- Press a shortcut to start/stop recording (or use push-to-talk mode)
- Silence is removed via VAD filter (silero)
- Transcribes your speech using Whisper Small
- Pastes the text directly into whatever app you’re using
- Runs entirely on your machine with GPU acceleration when available
- Works on Windows, macOS, and Linux
That’s it.
Known Issues & Transparency
This is my first Rust project, and it shows. There are bugs, rough edges, and architectural decisions that could be better. I’m documenting the known issues openly because I want everyone to understand what they are getting into, and encourage improvement in the project.
Current Issues
- On MacOS paste is not perfect. Occasionally you will get just ‘v’
- Occasionally an added ‘thank you’ at the end of transcription. Likely VAD being too permissive.
- Occasionally the end of your transcription will be cut off. Possibly a threading issue.
- No support for Intel Macs or ARM machines using Linux/Windows
- SmartScreen on Windows thinks Handy may be untrustworthy
- Microphone occasionally gets into a bad state
Discussions
Feature Requests
- Bind to only modifier keys
- Choose what STT model to use
- Choose what Microphone to use
- Add Autoupdate
Lend a Hand
Want to fix some of these issues? Come lend a hand!
I’m actively looking for contributors who want to help make this codebase cleaner, more robust, and more accessible. I hope that Handy can be the simplest starter codebase for someone wanting to play around with a desktop speech to text application. There is so much possibility in voice computing interfaces that just need someone with some imagination to make real.
If you love Rust and see places where the code can be better please submit PR’s or reach out at contact@handy.computer. I would love to learn from you, and we all can learn from a well-patterned simple codebase. Let’s make Handy that codebase together.
The goal is to build something that serves as both a useful tool and a foundation for others to build upon. A place where the community can come together to create something better than any one person could build alone.
Get Started
Download it, try it, read the code. See if it works for what you need.
Your search for the right speech-to-text tool can end here—not because Handy is perfect, but because you can make it perfect for you.