Skip to content

aljunalei/presentair

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🖐️ PresentAir

The Intelligent Touchless Command Center for Presenters


Summary of the Project

PresentAir transforms a standard webcam into an intelligent, touchless command center for presentations. Leveraging MediaPipe (for high-speed hand tracking) and TensorFlow.js (for facial analysis), the application acts as both a Remote Control and a Public Speaking Coach. It controls presentation software like PowerPoint, Canva, and Keynote using natural mid-air gestures, eliminating the need for physical clickers.


✨ Features and Functionalities

  • Touchless Navigation: Change slides without a clicker or keyboard. Includes a cooldown timer to prevent accidental double-skips.
  • Virtual Laser Pointer: Point with your index finger to control the mouse cursor. Features "Cinematic Smoothing" for stable movement.
  • Smart Timers: Trigger a Stopwatch or a 5-Minute Countdown with gestures to keep your talk on track.
  • Universal Control: Works with any software that accepts keyboard shortcuts.
  • Holographic UI: Visualizes your hand with a sci-fi glowing skeleton overlay.
  • Gaze Coaching: Detects poor posture, stiffness, swaying, and lack of eye contact (looking down/up/sideways).

🧠 AI Coaching Capabilities

The PresentAir Gaze Coach uses TensorFlow.js Face Mesh to provide real-time feedback on common presentation faults. The system employs Heuristic Analysis on facial geometry to detect postural changes, triggering a warning after a 3-second delay and providing audio feedback.

Bad Habit / State Heuristic Metric Corrective Action
Poor Eye Contact Vertical Gaze Ratio (Nose Tip vs. Eye Line) is outside a neutral zone (Downwards). "Please look at the audience"
Distracted (Ceiling) Vertical Gaze Ratio is significantly above neutral (Nose Tip moves above eye line). "Please look at the audience"
Side-Gazing Yaw Ratio (Nose X distance compared to Eye Corners) exceeds the 8% tolerance threshold. "Looking Side ⬅️/➡️"
Too Stiff Cumulative frame-to-frame movement of the nose is near zero for 5 continuous seconds. "You are too stiff. Try to move naturally."
Excessive Swaying Cumulative movement of the nose exceeds a high threshold for 5 continuous seconds. "You are swaying too much."
Face Blocked Face detection fails or is obscured by paper while the timer is active. The system holds the last known state. "Face Not Visible 🚫"

📖 Gesture Guide

Gesture Emoji Action Keyboard Shortcut Triggered
Open Hand Next Slide Right Arrow
Fist 👊 Previous Slide Left Arrow
Point ☝️ Laser Pointer Moves Mouse + Ctrl+L
Peace Sign ✌️ Start Stopwatch 1 + Enter (Internal/Canva)
Love Sign 🤟 5-Min Timer 0 + Enter (Canva 3s/Internal)

Notes: Each Gesture's equivalent action can be changed based on the user's preference. When you stop pointing, the app automatically switches the cursor back to the standard Arrow (Ctrl+A) and stops the laser.


⚙️ Architecture

This project uses a Hybrid Architecture to bridge the security gap between the Web Browser and the Operating System.

  1. Frontend (HTML/JS/AI): Captures video, tracks hand landmarks (MediaPipe), and analyzes facial geometry (TensorFlow.js) in the browser.
  2. Backend (Python/Flask): A lightweight local server that acts as the communication bridge.
  3. Automation (PyAutoGUI): Receives signals from the backend and executes physical keystrokes or mouse movements on the desktop.

⚡ Quick Start

1. Prerequisites

  • Python 3.x installed.
  • VS Code with "Live Server" extension.
  • A Webcam.

2. Install Python Dependencies

Open your terminal in the project folder and run:

pip install flask flask-cors pyautogui

About

PresentAir transforms your webcam into a touchless presentation remote and a public speaking coach. It uses MediaPipe for hand gesture control (navigate slides, virtual laser pointer) and TensorFlow.js to provide real-time, audio-visual feedback on poor eye contact, stiffness, and swaying, all without needing a physical clicker.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors