A Python desktop application designed for interview assistance with two main components:
- Stealth Overlay Window: A semi-transparent, frameless window that's always on top but completely invisible to screen capture software (Zoom, Teams, Google Meet)
- Dual-Channel Audio Capture: Simultaneous capture of microphone input and system audio output using WASAPI loopback
- 🎯 Screen Capture Exclusion: Uses Windows API (
WDA_EXCLUDEFROMCAPTURE) to hide the overlay from screen sharing - 🎤 Microphone Capture: Records your voice (Channel A)
- 🔊 System Audio Capture: Records interviewer's voice via WASAPI loopback (Channel B)
- 📊 Live Monitor Mode: Console output showing real-time audio capture from both channels
- 🎨 Modern UI: Dark theme overlay with audio status indicators
- 🔄 Dual-Stream Processing: Separate queues for independent audio stream handling
- Operating System: Windows 10/11 (required for WDA_EXCLUDEFROMCAPTURE)
- Python: 3.8 or higher
- Audio: Working microphone and system audio output
-
Clone or download this repository
-
Install Python dependencies:
pip install -r requirements.txtThe main dependencies are:
customtkinter- Modern UI frameworkpyaudiowpatch- Extended PyAudio with WASAPI loopback supportpywin32- Windows API accesscomtypes- COM interface support
Run the application with the stealth overlay window:
python main.pyThis will:
- Open a semi-transparent overlay window
- Start capturing audio from both microphone and system audio
- Display live transcription placeholders in the overlay
- Show visual indicators for active audio streams
The overlay window:
- Can be dragged around the screen
- Stays on top of all other windows
- Is invisible to screen capture software
- Shows real-time audio capture status
Test audio capture without the GUI:
python main.py monitorThis will:
- Print live transcription placeholders to the console
- Show sample counts and data sizes from both channels
- Verify that both audio streams are working correctly
- Display statistics when stopped (Ctrl+C)
Example output:
[MIC] 🎤 Sample #1 | Size: 2048 bytes | [Transcribing...]
[SPK] 🔊 Sample #1 | Size: 4096 bytes | [Transcribing...]
[MIC] 🎤 Sample #2 | Size: 2048 bytes | [Transcribing...]
[SPK] 🔊 Sample #2 | Size: 4096 bytes | [Transcribing...]
Check available audio devices on your system:
python main.py devicesThis will display all audio input/output devices with their properties.
Display usage information:
python main.py helpThe overlay window uses multiple Windows API techniques to remain invisible to screen capture:
SetWindowDisplayAffinity(WDA_EXCLUDEFROMCAPTURE): Primary method to exclude window from captureDwmSetWindowAttribute: Additional Desktop Window Manager settings- Frameless & Transparent: Custom window styling for minimal visibility
- Always on Top: Stays visible above all applications
The window is visible on your physical screen but appears as a black rectangle or is completely invisible to anyone viewing your screen through Zoom, Teams, Google Meet, or any other screen sharing software.
Uses PyAudioWPatch (PyAudio with WASAPI support) to capture two separate audio streams:
Channel A - Microphone:
- Captures from default input device
- Records your voice
- Mono audio stream
- 16kHz sample rate
Channel B - System Audio (Loopback):
- Uses WASAPI loopback device
- Captures all system audio output
- Records interviewer's voice from the meeting
- Stereo audio stream
- Native sample rate (typically 44.1kHz or 48kHz)
Both streams are captured simultaneously in separate threads with independent queues, allowing for real-time processing without blocking.
main.py
├── StealthAssistant (Main Controller)
│ ├── Initializes components
│ ├── Manages threads
│ └── Coordinates GUI and audio
│
stealth_overlay.py
├── StealthOverlay (GUI Component)
│ ├── CustomTkinter window
│ ├── Windows API integration
│ ├── Status indicators
│ └── Transcript display
│
audio_capture.py
└── DualChannelAudioCapture (Audio Component)
├── PyAudioWPatch integration
├── Device detection
├── Dual stream management
└── Monitor mode
This tool is designed for personal use in situations where you have the right to record. Be aware of:
- Recording laws in your jurisdiction
- Terms of service of the platform you're using
- Consent requirements for recording conversations
- Windows Only: The screen capture exclusion feature requires Windows 10/11
- WASAPI Required: System audio capture needs WASAPI loopback support
- Not 100% Guaranteed: Some screen capture methods might still detect the window
- Performance: Running during video calls may impact system performance
Overlay is visible in screen share:
- Ensure you're running Windows 10/11
- Try restarting the application
- Check if your screen sharing software uses non-standard capture methods
No audio captured from speakers:
- Verify system audio is playing
- Check that WASAPI loopback device is available
- Run
python main.py devicesto list available devices - Ensure no other application is exclusively using the audio device
No audio captured from microphone:
- Check microphone permissions in Windows Settings
- Verify microphone is working in other applications
- Select correct device if multiple microphones are available
Application crashes on startup:
- Verify all dependencies are installed:
pip install -r requirements.txt - Check Python version (3.8+ required)
- Run in monitor mode first to test audio capture:
python main.py monitor
Question Assister/
├── main.py # Application entry point
├── stealth_overlay.py # GUI overlay component
├── audio_capture.py # Audio capture component
├── requirements.txt # Python dependencies
└── README.md # This file
The modular design allows easy extension:
- Add Transcription: Integrate speech-to-text APIs (Whisper, Google Cloud, Azure)
- Add LLM Integration: Send transcripts to GPT/Claude for real-time assistance
- Add Recording: Save audio streams to WAV files
- Add Hotkeys: Global keyboard shortcuts for controls
- Add Configuration: User settings for audio devices, window position, etc.
StealthOverlay (stealth_overlay.py):
__init__: Initialize window and UI_configure_window: Set window properties_apply_stealth_settings: Apply Windows API exclusion_create_ui: Build interface elementsupdate_status: Update status messagesadd_transcript: Add text to transcript box
DualChannelAudioCapture (audio_capture.py):
find_devices: Auto-detect audio devicesstart_capture: Begin dual-stream capturestop_capture: Stop all streamsmonitor_mode: Console monitoringget_mic_data/get_speaker_data: Retrieve audio from queues
This project is provided as-is for educational purposes. Use responsibly and ethically.
This software is intended for personal use only. Users are responsible for:
- Complying with local recording laws
- Obtaining necessary consent for recordings
- Following platform terms of service
- Using the software ethically and legally
The developers assume no liability for misuse of this software.