Inspiration
We were inspired by a previous Hack the North project that turned a nerf gun into an FPS controller, as well as controller-free VR technology. We wanted to make things more accessible, so we settled on using something that everyone has, their hands.
What it does
SWISH is a Windows app that allows users to fully control their mouse and keyboard by using hand gestures. A webcam tracks your hands to drive the mouse and hold keys, and your voice triggers keystrokes and macros. Both run live, with latency low enough to play real-time games like Minecraft, Rocket League, Aimlabs, and Bloons TD 6.
How we built it
Our project is a .NET solution split into 3 C# projects:
- SWISH.App is a WPF shell (.NET 10, Windows) with a system tray icon. It hosts both input engines and adds a styled UI for calibration, a controls overview, settings, a tutorial, and a command editor.
- HandGestureRecognition (.NET 8) contains the GestureEngine, which turns camera input into mouse and keyboard input.
- VoiceKeys contains the VoiceEngine, which turns microphone input into keystrokes
Hand tracking is done via OpenCvSharp4 for capture and image processing and ONNX Runtime for inference, and ElevenLabs API is used for custom voice commands that can be mapped to keybinds or macros.
Challenges we ran into
The main challenges we faced were working with .NET, as even though our two developers have some experience with it, there were still plenty of things we needed to troubleshoot. Another challenge was merging work, as our two main systems were initially independent of each other.
Accomplishments that we're proud of
We've managed to create a really unique project in 24 hours that we think many people will enjoy.
What we learned
Some things we learned include applications of computer vision and speech-to-text technology, as well as working in a multidisciplinary team.
What's next for SWISH (Serial Wireless Interactive System for Humans)
Refinement and optimization, especially with our API usage.
Log in or sign up for Devpost to join the conversation.