A voice-powered AI assistant with real-time speech recognition, natural language processing, and conversational AI capabilities. Named after the mythological figure who dared to fly—though this one knows when to pull back from the sun.
4
stars
26
commits
Python
primary language
Feb 5, 2026
updated
A voice-powered AI assistant with real-time speech recognition, natural language processing, and conversational AI capabilities. Named after the mythological figure who dared to fly—though this one knows when to pull back from the sun.
┌─────────────────────────────────────┐ ┌──────────────────────────────────────┐
│ CLIENT (Laptop) │ │ BACKEND (GPU Server) │
│ │ │ │
│ PyAudio ──► OpenWakeWord │ │ │
│ ("Hey Jarvis") │ │ │
│ │ │ │ │
│ [wake word detected] │ │ │
│ │ │ │ │
│ Play confirmation chime │ │ │
│ │ │ WS │ │
│ Connect WebSocket ─────────┼─────────┼──► Session starts (LISTENING) │
│ │ │ │ │ │
│ Stream audio ──────────────┼─────────┼──► Silero VAD ──► Whisper (small.en)│
│ │ │ │ │ │
│ │ │ │ ▼ │
│ │ │ │ Gemma 2 2B (4-bit) │
│ │ │ │ │ │
│ ◄──────────────────────────────────┼─────────┼─── TRANSCRIPT + RESPONSE │
│ Display response │ │ │
│ Return to wake word listening │ │ │
└─────────────────────────────────────┘ └──────────────────────────────────────┘
cd Backend
# Create virtual environment
python -m venv venv
venv\Scripts\activate # Windows
# source venv/bin/activate # Linux/Mac
# Install dependencies
pip install -r requirements.txt
# Install PyTorch with CUDA (if not already installed)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
# Login to HuggingFace (required for Gemma)
huggingface-cli login
# Run the server
python main.py
cd Client
# Create virtual environment
python -m venv venv
venv\Scripts\activate # Windows
# Install dependencies
pip install -r requirement.txt
# Run the client
python client.py
python main.pypython client.py| Direction | Message | Description |
|---|---|---|
| Client → Server | WAKE_WORD:hey_icarus | Wake word detected, start session |
| Client → Server | <audio bytes> | Raw PCM audio (16kHz, mono, int16) |
| Server → Client | STATE:LISTENING | Session started |
| Server → Client | STATE:IDLE | Session ended |
| Server → Client | TRANSCRIPT:<text> | User's transcribed speech |
| Server → Client | RESPONSE:<text> | Icarus's response |
| Server → Client | ACK | Audio chunk received |
Project-Icarus/
├── Backend/
│ ├── main.py # FastAPI server with VAD, Whisper, and LLM
│ ├── requirements.txt # Backend dependencies
│ ├── train_wake_word.py # Script to train custom wake word
│ └── models/ # Model storage directory
├── Client/
│ ├── client.py # Audio capture and wake word detection
│ └── requirement.txt # Client dependencies
└── frontend/ # Web UI (future)
Key settings in Backend/main.py:
| Setting | Default | Description |
|---|---|---|
SPEECH_THRESHOLD | 0.5 | VAD sensitivity (lower = more sensitive) |
MIN_SILENCE_DURATION_MS | 500 | Silence to end speech segment |
SESSION_TIMEOUT_SEC | 5.0 | Timeout to auto-end session |
LLM_MAX_TOKENS | 150 | Max response length |
LLM_TEMPERATURE | 0.7 | Response creativity |
Icarus is designed to be:
MIT License
26 commits
Python
64.7%
TypeScript
20.7%
JavaScript
8.4%
CSS
5.9%
A voice-powered AI assistant with real-time speech recognition, natural language processing, and conversational AI capabilities. Named after the mythological figure who dared to fly—though this one knows when to pull back from the sun.
4
stars
26
commits
Python
primary language
Feb 5, 2026
updated
A voice-powered AI assistant with real-time speech recognition, natural language processing, and conversational AI capabilities. Named after the mythological figure who dared to fly—though this one knows when to pull back from the sun.
┌─────────────────────────────────────┐ ┌──────────────────────────────────────┐
│ CLIENT (Laptop) │ │ BACKEND (GPU Server) │
│ │ │ │
│ PyAudio ──► OpenWakeWord │ │ │
│ ("Hey Jarvis") │ │ │
│ │ │ │ │
│ [wake word detected] │ │ │
│ │ │ │ │
│ Play confirmation chime │ │ │
│ │ │ WS │ │
│ Connect WebSocket ─────────┼─────────┼──► Session starts (LISTENING) │
│ │ │ │ │ │
│ Stream audio ──────────────┼─────────┼──► Silero VAD ──► Whisper (small.en)│
│ │ │ │ │ │
│ │ │ │ ▼ │
│ │ │ │ Gemma 2 2B (4-bit) │
│ │ │ │ │ │
│ ◄──────────────────────────────────┼─────────┼─── TRANSCRIPT + RESPONSE │
│ Display response │ │ │
│ Return to wake word listening │ │ │
└─────────────────────────────────────┘ └──────────────────────────────────────┘
cd Backend
# Create virtual environment
python -m venv venv
venv\Scripts\activate # Windows
# source venv/bin/activate # Linux/Mac
# Install dependencies
pip install -r requirements.txt
# Install PyTorch with CUDA (if not already installed)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
# Login to HuggingFace (required for Gemma)
huggingface-cli login
# Run the server
python main.py
cd Client
# Create virtual environment
python -m venv venv
venv\Scripts\activate # Windows
# Install dependencies
pip install -r requirement.txt
# Run the client
python client.py
python main.pypython client.py| Direction | Message | Description |
|---|---|---|
| Client → Server | WAKE_WORD:hey_icarus | Wake word detected, start session |
| Client → Server | <audio bytes> | Raw PCM audio (16kHz, mono, int16) |
| Server → Client | STATE:LISTENING | Session started |
| Server → Client | STATE:IDLE | Session ended |
| Server → Client | TRANSCRIPT:<text> | User's transcribed speech |
| Server → Client | RESPONSE:<text> | Icarus's response |
| Server → Client | ACK | Audio chunk received |
Project-Icarus/
├── Backend/
│ ├── main.py # FastAPI server with VAD, Whisper, and LLM
│ ├── requirements.txt # Backend dependencies
│ ├── train_wake_word.py # Script to train custom wake word
│ └── models/ # Model storage directory
├── Client/
│ ├── client.py # Audio capture and wake word detection
│ └── requirement.txt # Client dependencies
└── frontend/ # Web UI (future)
Key settings in Backend/main.py:
| Setting | Default | Description |
|---|---|---|
SPEECH_THRESHOLD | 0.5 | VAD sensitivity (lower = more sensitive) |
MIN_SILENCE_DURATION_MS | 500 | Silence to end speech segment |
SESSION_TIMEOUT_SEC | 5.0 | Timeout to auto-end session |
LLM_MAX_TOKENS | 150 | Max response length |
LLM_TEMPERATURE | 0.7 | Response creativity |
Icarus is designed to be:
MIT License
26 commits
Python
64.7%
TypeScript
20.7%
JavaScript
8.4%
CSS
5.9%