Skip to content

rbcorrales/gestalyze

Gestalyze

Gestalyze Logo

Gesture-based Smart Home Interface using Sign Language and Hand Pose Recognition

πŸ”§ Built with FastAPI, MediaPipe, React, MQTT and Home Assistant.

πŸ” Empowering accessibility through open-source gesture control.


πŸ“¦ Overview

Gestalyze is an open-source project that enables real-time hand gesture recognition for controlling smart home devices. By combining computer vision and machine learning techniques, the system interprets static hand poses β€” including alphabet signs from sign language β€” and sends commands to home automation platforms like Home Assistant.

The system is modular, lightweight, and designed for low-power environments using technologies such as MQTT, MediaPipe Hands, and React. Users can extend, train custom models, and integrate new gesture mappings for full control over their smart environment.


🎯 Key Features

  • βœ‹ Real-time hand detection and finger tracking with MediaPipe.
  • πŸ”  ASL static alphabet recognition using trainable ML classifiers.
  • πŸ’‘ Smart home integration via MQTT and Home Assistant plugins.
  • ⚑ Low-latency WebSocket communication between frontend and backend.
  • πŸ“· Frontend web app built in React + WebRTC.
  • 🌍 Multilingual interface with i18n support.
  • 🧠 Supports custom and pre-trained gesture models.
  • πŸ“Š Visualization tools for metrics, training and evaluation.
  • πŸ§ͺ Designed for reproducible research and experimentation.

🧱 System Architecture

This repository is currently structured as a monorepo to simplify development, deployment, and cross-component coordination. As the project matures, it is expected that individual components β€” such as the frontend, backend, and Home Assistant integrations β€” may be separated into distinct repositories to improve modularity and scalability.


πŸ—ƒοΈ Project Structure

gestalyze/
β”œβ”€β”€ backend/               # Gestalyze backend server
β”‚   β”œβ”€β”€ inference/         # ML model inference and processing
β”‚   β”œβ”€β”€ mqtt/              # MQTT client and message handling
β”‚   └── ssl/               # SSL certificates and configuration
β”œβ”€β”€ config/                # Project-wide configuration files (e.g., MQTT)
β”œβ”€β”€ datasets/              # Public and custom gesture datasets
β”œβ”€β”€ docs/                  # Assets and documentation support files
β”œβ”€β”€ frontend/              # React web app for video capture and UI
β”œβ”€β”€ homeassistant/         # Plugins and custom components for Home Assistant
β”‚   β”œβ”€β”€ custom_components/ # Custom Home Assistant integration
β”‚   └── gestalyze_plugin/  # Home Assistant plugin for gestalyze
β”œβ”€β”€ models/                # Serialized ML models (.joblib)
β”œβ”€β”€ training/              # Training scripts and model experiments
β”œβ”€β”€ website/               # Public website (gestalyze.com)
└── Makefile               # Project task automation

πŸš€ Getting Started

Requires Python 3.10+, Node.js 18+, and Mosquitto MQTT

# Clone repository
git clone https://github.com/yourname/gestalyze.git
cd gestalyze

# Install Python & Node dependencies
make install

# Start development servers
make dev

Open your browser to http://localhost:5173 to launch the interface.


🧠 Training Custom Models

To train your own gesture recognition model:

# Example with custom dataset
make extract-landmarks DATASET_NAME=your_dataset
make train MODEL_TYPE=custom DATASET_NAME=your_dataset

Models are saved to models/ and can be switched via the interface.


πŸ› οΈ Makefile Commands

Common tasks for development and training:

  • make install β€” Installs Python and Node.js dependencies
  • make dev β€” Starts both frontend and backend in development mode
  • make build β€” Builds the frontend for production
  • make run β€” Runs the backend with built frontend and MQTT
  • make run-ssl β€” Runs backend with SSL enabled
  • make train MODEL_TYPE=custom DATASET_NAME=name β€” Trains a gesture model
  • make extract-landmarks DATASET_NAME=name β€” Extracts MediaPipe landmarks from dataset
  • make clean β€” Cleans compiled files, build folders and caches
  • make mqtt-start, make mqtt-stop β€” Start/stop the Mosquitto broker
  • make ssl-key-gen β€” Generates self-signed SSL certificates
  • make deploy-ha β€” Deploys custom integration to Home Assistant
  • make website-dev β€” Starts the public website in development mode
  • make website-build β€” Builds the public website for production
  • make version β€” Displays version info
  • make help β€” Shows available commands

For advanced options and custom variables, inspect the Makefile.


πŸ’‘ Smart Home Integration

Gestalyze communicates with Home Assistant via MQTT. You can:

  • Use our plugin (external service)
  • Or the custom integration under homeassistant/custom_components/gestalyze/

This enables the use of sensors and event-based automations based on detected hand gestures.


πŸ”’ Privacy & Security

All gesture processing happens locally on your device. No images or biometric data are transmitted or stored externally. See Privacy Policy for full details.


πŸ“– Documentation

  • Full system documentation: https://gestalyze.com
  • Datasets, models and training configuration
  • Code walkthroughs, diagrams and tutorials

πŸ“œ License

This project is licensed under the Apache License 2.0 β€” see LICENSE for details.


🀝 Contributing

Pull requests, feature ideas and issue reports are welcome. For contributions, see CONTRIBUTING.md.


πŸ‘‹ Acknowledgments

  • MediaPipe by Google for hand tracking
  • Home Assistant for smart home integration
  • Hugging Face and Kaggle for gesture datasets
  • All open-source contributors who inspire and make projects like this possible

🧭 Roadmap & TODO

Gestalyze is still under active development. Some upcoming features and improvements include:

  • Support for multiple simultaneous frontend clients.
  • Real-time model hot-swapping via the interface.
  • Integration with additional smart home platforms.
  • Gesture recording and labeling tools for data collection.
  • Extended dynamic gesture recognition (sequential actions).
  • Accessibility testing with real users and community feedback.
  • CI/CD automation for releases and plugin deployment.
  • Docker-based deployment flow.
  • Unit testing for every module.
  • Improved model modularity for easier experimentation and integration.
  • Continued refinement of gesture recognition model accuracy.

Β© 2025 β€” Initially developed by rbcorrales.

About

No description, website, or topics provided.

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors