Real-time multi-modal AI perception system for Windows that fuses screen activity, camera vision, and voice input to generate contextual awareness.
Current Version: Windows C++ Implementation (v2.0) with hybrid Python camera pipeline
๐ First time setup? See QUICK_START.md for a streamlined guide!
The easiest way to get started:
# Clone the repository
git clone <your-repo-url> PE
cd PE
# Run automated setup (downloads models, builds everything)
.\setup.bat
What it does:
Time: 20-30 minutes (depending on internet speed) GPU Support: Automatically enabled if NVIDIA GPU + CUDA Toolkit detected
See SETUP_GUIDE.md for detailed setup instructions and troubleshooting.
Required:
Optional (for GPU acceleration):
If you prefer to build manually or the automated setup fails:
# 1. Download models (see SETUP_GUIDE.md)
# 2. Build whisper.cpp (see SETUP_GUIDE.md)
# 3. Navigate to windows_code directory
cd windows_code
# 4. Create build directory
mkdir build
cd build
# 5. Configure CMake
"C:\Program Files\CMake\bin\cmake.exe" .. -G "Visual Studio 17 2022" -A x64
# 6. Build the project (Release mode)
"C:\Program Files\CMake\bin\cmake.exe" --build . --config Release
For complete manual setup instructions, see SETUP_GUIDE.md
Start in 2 separate terminals:
# Terminal 1: Start the C++ Perception Engine
cd windows_code\build\bin\Release
PerceptionEngine.exe
# Terminal 2: Start Python Camera Vision Client
cd windows_code
python win_camera_fastvlm_pytorch.py
Access Dashboard:
http://localhost:8777/dashboard
Expected Output:
๐ Nova Perception Engine v2.0
โ
HTTP Server started on port 8777
โ
Screen monitoring initialized
โ
Audio pipeline initialized (Whisper base.en)
โ
Dashboard available at http://localhost:8777/dashboard
[DEBUG] Screen context updated
[DEBUG] Voice transcription: hello world
[Camera] POST /update_context received
Screen Monitoring (C++)
Voice Transcription (C++)
Camera Vision (Python)
Active: chrome.exe | "Google - Search Results"
Said: "show me the latest news"
Camera: "A person sitting at a desk with a laptop"
Pipeline Latency:
- Voice ASR: 0.18s
- Camera Vision: 9.2s
- Context Update: 0.03s
| Component | Requirement | Notes |
|---|---|---|
| CPU | Intel Core i5/i7 (4+ cores, AVX2 support) | Required |
| RAM | 8GB minimum, 16GB recommended | Required |
| Storage | ~3GB for AI models | Required |
| GPU | Optional: NVIDIA GPU (Compute Capability 6.0+) | 5-10x faster voice/camera |
| CUDA | Optional: CUDA Toolkit 13.0+ | Auto-detected if installed |
| OS | Windows 10/11 (x64) | Required |
| Component | Latency | CPU Usage | Update Frequency |
|---|---|---|---|
| Screen monitoring | <5ms | 2-3% | On window change |
| Voice ASR (Whisper) | 200-500ms | 15-25% | Continuous stream |
| Camera Vision (FastVLM) | 8-12s | 20-30% | Every 10 seconds |
| Context fusion | 20-50ms | 3-5% | Every 500ms |
| HTTP server | <10ms | 2-3% | On request |
| Total | - | ~45-60% | - |
Hardware tested: Intel Core i7 laptop, 16GB RAM
| Component | Latency | GPU Usage | CPU Usage | Update Frequency |
|---|---|---|---|---|
| Screen monitoring | <5ms | 0% | 2-3% | On window change |
| Voice ASR (Whisper) | 150-300ms โก | 15-25% | 5-10% | Continuous stream |
| Camera Vision (FastVLM) | 1.5-2s โก | 30-40% | 5-8% | Every 10 seconds |
| Context fusion | 20-50ms | 0% | 3-5% | Every 500ms |
| HTTP server | <10ms | 0% | 2-3% | On request |
| Total | - | ~50% | ~20-30% | - |
Hardware tested: Intel Core i7 laptop, NVIDIA RTX 5000 Ada, 16GB RAM, CUDA 13.0
GPU Performance Gains:
Key Improvements over Python v1.0:
CMake not found:
# Install CMake from https://cmake.org/download/
# Add to PATH: C:\Program Files\CMake\bin
Visual Studio not found:
# Install Visual Studio 2022 Community Edition
# Include "Desktop development with C++" workload
Missing vcpkg dependencies:
# vcpkg is auto-managed via CMake FetchContent
# If issues occur, delete build directory and rebuild
Port 8777 already in use:
# Check what's using the port
netstat -ano | findstr :8777
# Kill the process
taskkill /PID <PID> /F
# Or change port in PerceptionEngine.cpp (line 86)
Whisper model not found:
# Models should be in: windows_code/models/ggml-base.en.bin
# If missing, check CMakeLists.txt download logic
# Or manually download from: https://huggingface.co/ggerganov/whisper.cpp
Camera not working:
# Check Windows camera permissions
# Settings โ Privacy โ Camera โ Allow Python
# Try different camera index in win_camera_fastvlm_pytorch.py
cap = cv2.VideoCapture(0) # Try 0, 1, 2...
Microphone not working:
# Check Windows microphone permissions
# Settings โ Privacy โ Microphone โ Allow PerceptionEngine.exe
# Verify audio device in Windows Sound settings
Dashboard not updating:
โ ๏ธ Known Issue: Intermittent mutex deadlock causes dashboard to stop updating after 5-30 minutes.
Symptoms:
Workaround:
Root Cause: Mutex deadlock in ContextCollector between HTTP handler thread and audio callback thread. See CLAUDE.md Section 10 for detailed analysis.
Status: Under investigation by engineering team.
Dashboard shows connection failed:
Camera/Voice data missing:
# win_camera_fastvlm_pytorch.py - line 164
time.sleep(10) # Update every 10 seconds (default)
# time.sleep(15) # Update every 15 seconds (reduce CPU usage)
<!-- dashboard.html - JavaScript section -->
setInterval(updateContext, 500); // 500ms (default)
// setInterval(updateContext, 1000); // 1000ms (reduce network traffic)
# CMakeLists.txt - line ~80
set(WHISPER_MODEL_URL "https://huggingface.co/.../ggml-base.en.bin")
# Options: tiny.en (40MB), base.en (140MB), small.en (460MB)
# Larger = better quality but slower
// PerceptionEngine.cpp - AudioEngine initialization
// Silero VAD threshold (0.0 - 1.0, higher = less sensitive)
// Default is typically 0.5, adjust in AudioEngine if needed
windows_code/
โโโ PerceptionEngine.cpp # Main server entry point
โโโ ContextCollector.h/cpp # Context fusion engine
โโโ WindowsAPIs.h/cpp # Win32 API wrappers (screen monitoring)
โโโ AudioEngine.h/cpp # WASAPI audio capture + Silero VAD
โโโ AsyncWhisperQueue.h/cpp # Async Whisper transcription queue
โโโ HTTPServer.h/cpp # HTTP server for dashboard + API
โโโ Json.h/cpp # Lightweight JSON builder
โโโ dashboard.html # Web dashboard UI
โโโ CMakeLists.txt # Build configuration
โโโ models/
โ โโโ ggml-base.en.bin # Whisper model (auto-downloaded)
โโโ third-party/
โ โโโ whisper.cpp/ # Whisper.cpp library (auto-cloned)
โโโ win_camera_fastvlm_pytorch.py # Python camera client
โโโ build/ # Build output directory
โโโ bin/Release/
โโโ PerceptionEngine.exe # Main executable
โโโ dashboard.html # Dashboard (copied during build)
| Model | Size | Purpose | Integration | GPU Support |
|---|---|---|---|---|
| Whisper small | ~465MB | Voice transcription (99 languages) | C++ (whisper.cpp) | โ CUDA (auto-detected) |
| Silero VAD | ~1.8MB | Speech detection | C++ (ONNX Runtime) | โ CPU only |
| FastVLM-0.5B | ~1GB | Camera scene description | Python (PyTorch) | โ CUDA (auto-detected) |
Total disk space: ~1.5GB
GPU Acceleration: Automatically uses NVIDIA GPU when CUDA Toolkit is installed
Model Benefits:
Returns current fused context as JSON.
Example Response:
{
"activeApp": "chrome.exe",
"activeWindow": "Google - Chrome",
"apps": [
{"name": "chrome.exe", "window": "Google - Chrome"},
{"name": "Code.exe", "window": "VS Code"}
],
"batteryPercent": 85,
"voiceTranscription": "hello world",
"cameraDescription": "A person sitting at desk",
"cameraLatency": 9200,
"voiceLatency": 180.5,
"contextUpdateLatency": 28.3,
"fusedContext": "Active: chrome.exe | Said: \"hello world\"",
"lastUpdated": "2025-10-10 14:32:15"
}
Receive perception updates from external clients (e.g., Python camera).
Request Body:
{
"device": "Camera",
"data": {
"objects": ["A person sitting at desk with laptop"]
}
}
Response:
{
"status": "ok"
}
Serves the web dashboard UI.
Full C++ camera pipeline
System audio capture
Lock-free context fusion
Advanced model optimizations
Status: โ Unfixed Priority: P0 Frequency: 5-30 minutes of operation
Description: Dashboard stops updating due to mutex deadlock in ContextCollector. Server continues running but appears frozen.
Workaround: Restart PerceptionEngine.exe
Full Analysis: See CLAUDE.md Section 10
Status: โ ๏ธ By Design Priority: P2
Description: 8-12 second latency due to PyTorch CPU inference.
Solution: Planned for v3.0 with C++ ONNX Runtime migration.
Proprietary - Nova Perception Engine Team
Third-Party Libraries:
For detailed technical documentation, architecture decisions, implementation guides, and debugging information, see CLAUDE.md.
Version: 2.0.0 (Windows C++ Implementation) Last Updated: 2025-10-10 Platform: Windows 10/11 (x64)
Real-time multi-modal AI perception system for Windows that fuses screen activity, camera vision, and voice input to generate contextual awareness.
Current Version: Windows C++ Implementation (v2.0) with hybrid Python camera pipeline
๐ First time setup? See QUICK_START.md for a streamlined guide!
The easiest way to get started:
# Clone the repository
git clone <your-repo-url> PE
cd PE
# Run automated setup (downloads models, builds everything)
.\setup.bat
What it does:
Time: 20-30 minutes (depending on internet speed) GPU Support: Automatically enabled if NVIDIA GPU + CUDA Toolkit detected
See SETUP_GUIDE.md for detailed setup instructions and troubleshooting.
Required:
Optional (for GPU acceleration):
If you prefer to build manually or the automated setup fails:
# 1. Download models (see SETUP_GUIDE.md)
# 2. Build whisper.cpp (see SETUP_GUIDE.md)
# 3. Navigate to windows_code directory
cd windows_code
# 4. Create build directory
mkdir build
cd build
# 5. Configure CMake
"C:\Program Files\CMake\bin\cmake.exe" .. -G "Visual Studio 17 2022" -A x64
# 6. Build the project (Release mode)
"C:\Program Files\CMake\bin\cmake.exe" --build . --config Release
For complete manual setup instructions, see SETUP_GUIDE.md
Start in 2 separate terminals:
# Terminal 1: Start the C++ Perception Engine
cd windows_code\build\bin\Release
PerceptionEngine.exe
# Terminal 2: Start Python Camera Vision Client
cd windows_code
python win_camera_fastvlm_pytorch.py
Access Dashboard:
http://localhost:8777/dashboard
Expected Output:
๐ Nova Perception Engine v2.0
โ
HTTP Server started on port 8777
โ
Screen monitoring initialized
โ
Audio pipeline initialized (Whisper base.en)
โ
Dashboard available at http://localhost:8777/dashboard
[DEBUG] Screen context updated
[DEBUG] Voice transcription: hello world
[Camera] POST /update_context received
Screen Monitoring (C++)
Voice Transcription (C++)
Camera Vision (Python)
Active: chrome.exe | "Google - Search Results"
Said: "show me the latest news"
Camera: "A person sitting at a desk with a laptop"
Pipeline Latency:
- Voice ASR: 0.18s
- Camera Vision: 9.2s
- Context Update: 0.03s
| Component | Requirement | Notes |
|---|---|---|
| CPU | Intel Core i5/i7 (4+ cores, AVX2 support) | Required |
| RAM | 8GB minimum, 16GB recommended | Required |
| Storage | ~3GB for AI models | Required |
| GPU | Optional: NVIDIA GPU (Compute Capability 6.0+) | 5-10x faster voice/camera |
| CUDA | Optional: CUDA Toolkit 13.0+ | Auto-detected if installed |
| OS | Windows 10/11 (x64) | Required |
| Component | Latency | CPU Usage | Update Frequency |
|---|---|---|---|
| Screen monitoring | <5ms | 2-3% | On window change |
| Voice ASR (Whisper) | 200-500ms | 15-25% | Continuous stream |
| Camera Vision (FastVLM) | 8-12s | 20-30% | Every 10 seconds |
| Context fusion | 20-50ms | 3-5% | Every 500ms |
| HTTP server | <10ms | 2-3% | On request |
| Total | - | ~45-60% | - |
Hardware tested: Intel Core i7 laptop, 16GB RAM
| Component | Latency | GPU Usage | CPU Usage | Update Frequency |
|---|---|---|---|---|
| Screen monitoring | <5ms | 0% | 2-3% | On window change |
| Voice ASR (Whisper) | 150-300ms โก | 15-25% | 5-10% | Continuous stream |
| Camera Vision (FastVLM) | 1.5-2s โก | 30-40% | 5-8% | Every 10 seconds |
| Context fusion | 20-50ms | 0% | 3-5% | Every 500ms |
| HTTP server | <10ms | 0% | 2-3% | On request |
| Total | - | ~50% | ~20-30% | - |
Hardware tested: Intel Core i7 laptop, NVIDIA RTX 5000 Ada, 16GB RAM, CUDA 13.0
GPU Performance Gains:
Key Improvements over Python v1.0:
CMake not found:
# Install CMake from https://cmake.org/download/
# Add to PATH: C:\Program Files\CMake\bin
Visual Studio not found:
# Install Visual Studio 2022 Community Edition
# Include "Desktop development with C++" workload
Missing vcpkg dependencies:
# vcpkg is auto-managed via CMake FetchContent
# If issues occur, delete build directory and rebuild
Port 8777 already in use:
# Check what's using the port
netstat -ano | findstr :8777
# Kill the process
taskkill /PID <PID> /F
# Or change port in PerceptionEngine.cpp (line 86)
Whisper model not found:
# Models should be in: windows_code/models/ggml-base.en.bin
# If missing, check CMakeLists.txt download logic
# Or manually download from: https://huggingface.co/ggerganov/whisper.cpp
Camera not working:
# Check Windows camera permissions
# Settings โ Privacy โ Camera โ Allow Python
# Try different camera index in win_camera_fastvlm_pytorch.py
cap = cv2.VideoCapture(0) # Try 0, 1, 2...
Microphone not working:
# Check Windows microphone permissions
# Settings โ Privacy โ Microphone โ Allow PerceptionEngine.exe
# Verify audio device in Windows Sound settings
Dashboard not updating:
โ ๏ธ Known Issue: Intermittent mutex deadlock causes dashboard to stop updating after 5-30 minutes.
Symptoms:
Workaround:
Root Cause: Mutex deadlock in ContextCollector between HTTP handler thread and audio callback thread. See CLAUDE.md Section 10 for detailed analysis.
Status: Under investigation by engineering team.
Dashboard shows connection failed:
Camera/Voice data missing:
# win_camera_fastvlm_pytorch.py - line 164
time.sleep(10) # Update every 10 seconds (default)
# time.sleep(15) # Update every 15 seconds (reduce CPU usage)
<!-- dashboard.html - JavaScript section -->
setInterval(updateContext, 500); // 500ms (default)
// setInterval(updateContext, 1000); // 1000ms (reduce network traffic)
# CMakeLists.txt - line ~80
set(WHISPER_MODEL_URL "https://huggingface.co/.../ggml-base.en.bin")
# Options: tiny.en (40MB), base.en (140MB), small.en (460MB)
# Larger = better quality but slower
// PerceptionEngine.cpp - AudioEngine initialization
// Silero VAD threshold (0.0 - 1.0, higher = less sensitive)
// Default is typically 0.5, adjust in AudioEngine if needed
windows_code/
โโโ PerceptionEngine.cpp # Main server entry point
โโโ ContextCollector.h/cpp # Context fusion engine
โโโ WindowsAPIs.h/cpp # Win32 API wrappers (screen monitoring)
โโโ AudioEngine.h/cpp # WASAPI audio capture + Silero VAD
โโโ AsyncWhisperQueue.h/cpp # Async Whisper transcription queue
โโโ HTTPServer.h/cpp # HTTP server for dashboard + API
โโโ Json.h/cpp # Lightweight JSON builder
โโโ dashboard.html # Web dashboard UI
โโโ CMakeLists.txt # Build configuration
โโโ models/
โ โโโ ggml-base.en.bin # Whisper model (auto-downloaded)
โโโ third-party/
โ โโโ whisper.cpp/ # Whisper.cpp library (auto-cloned)
โโโ win_camera_fastvlm_pytorch.py # Python camera client
โโโ build/ # Build output directory
โโโ bin/Release/
โโโ PerceptionEngine.exe # Main executable
โโโ dashboard.html # Dashboard (copied during build)
| Model | Size | Purpose | Integration | GPU Support |
|---|---|---|---|---|
| Whisper small | ~465MB | Voice transcription (99 languages) | C++ (whisper.cpp) | โ CUDA (auto-detected) |
| Silero VAD | ~1.8MB | Speech detection | C++ (ONNX Runtime) | โ CPU only |
| FastVLM-0.5B | ~1GB | Camera scene description | Python (PyTorch) | โ CUDA (auto-detected) |
Total disk space: ~1.5GB
GPU Acceleration: Automatically uses NVIDIA GPU when CUDA Toolkit is installed
Model Benefits:
Returns current fused context as JSON.
Example Response:
{
"activeApp": "chrome.exe",
"activeWindow": "Google - Chrome",
"apps": [
{"name": "chrome.exe", "window": "Google - Chrome"},
{"name": "Code.exe", "window": "VS Code"}
],
"batteryPercent": 85,
"voiceTranscription": "hello world",
"cameraDescription": "A person sitting at desk",
"cameraLatency": 9200,
"voiceLatency": 180.5,
"contextUpdateLatency": 28.3,
"fusedContext": "Active: chrome.exe | Said: \"hello world\"",
"lastUpdated": "2025-10-10 14:32:15"
}
Receive perception updates from external clients (e.g., Python camera).
Request Body:
{
"device": "Camera",
"data": {
"objects": ["A person sitting at desk with laptop"]
}
}
Response:
{
"status": "ok"
}
Serves the web dashboard UI.
Full C++ camera pipeline
System audio capture
Lock-free context fusion
Advanced model optimizations
Status: โ Unfixed Priority: P0 Frequency: 5-30 minutes of operation
Description: Dashboard stops updating due to mutex deadlock in ContextCollector. Server continues running but appears frozen.
Workaround: Restart PerceptionEngine.exe
Full Analysis: See CLAUDE.md Section 10
Status: โ ๏ธ By Design Priority: P2
Description: 8-12 second latency due to PyTorch CPU inference.
Solution: Planned for v3.0 with C++ ONNX Runtime migration.
Proprietary - Nova Perception Engine Team
Third-Party Libraries:
For detailed technical documentation, architecture decisions, implementation guides, and debugging information, see CLAUDE.md.
Version: 2.0.0 (Windows C++ Implementation) Last Updated: 2025-10-10 Platform: Windows 10/11 (x64)