Sevue is a desktop application that turns live sign input into subtitle-like text over video and publishes the result to a virtual camera.
The app is built with PySide6, OpenCV, MediaPipe, and pyvirtualcam. It runs locally on your machine and is designed for low-latency, always-on desktop use.
- Captures frames from a selected physical camera
- Runs MediaPipe gesture recognition in a worker thread
- Builds short text output from recognized gestures
- Renders text stream
- Sends the processed stream to a virtual camera device
- Provides a desktop UI for camera/model/settings/shortcuts
- Grab the proper file for your OS from the Releases page.
- Install the file like normal for your OS. Usually just double-click on the file.
- That's it, sevue will be installed to your system like normal and shows up on the doc / start menu
- Python 3.10 to Python 3.12
- A working physical camera or apps like DroidCam
- OS support:
- Windows
- Linux
- macOS
clone the project:
git clone https://github.com/codeweevers/sevue.git
cd sevuecreate and activate a virtual env. For example with conda:
conda create -n sevue python=3.12
conda activate sevueinstall requirements:
pip install --upgrade pip
pip install -r requirements.txtpython sevue.pyw- Launch Sevue.
- Click
Start Sevue. - In your conferencing/recording app, choose
Sevue-VirtualCam(or your configured virtual cam target).
sevue.pyw: app entrypoint and single-instance lock/activation servercontrollers/main_window_controller.py: main orchestration (UI state, workers, tray, camera/model selection)models/state_model.py: persisted app state, settings, shortcuts, model registry, selected camera/modelmodels/frame_buffer.py: shared frame buffer between camera and AI workersworkers/threads.py:CameraThread: capture, overlay rendering, virtual camera outputAIThread: gesture inference and subtitle text generation
workers/camera_utils.py: cross-platform camera discovery and metadataservices/model_registry_service.py: model import/validation/registry managementservices/startup_service.py: start-on-login integration (Windows/Linux)views/: Home/Settings pages and UI widgets
Sevue saves:
- selected camera (UID + resolved index)
- selected model + model registry
- app toggles (preview, flips, tray behavior, auto-start camera, etc.)
- keyboard shortcuts
Config location:
- Installed/frozen build: platform user config directory (
platformdirs) - Source/dev run:
data/config.jsonin project root
- Default runtime model is resolved via
services/model_registry_service.py - Additional
.taskmodels can be imported from Settings - Imported models are copied into the app model storage directory and registered by name
Default configurable shortcuts:
Ctrl+Shift+Sstart/stop cameraCtrl+Shift+Mhide/show windowCtrl+Shift+Cflip cameraCtrl+Shift+Oflip subtitlesCtrl+Shift+Hflip hand labelsCtrl+Shift+Dtoggle hand debug
Also supported:
Escwindow hide/show behavior
PyInstaller spec is included at:
train_installer_gen/sevue.spec
Windows installer-related assets/scripts are in:
train_installer_gen/Install_SevueCam.battrain_installer_gen/Uninstall_SevueCam.battrain_installer_gen/installer scrypt.iss
Training can only be done on Linux and must use Python 3.10 or 3.11. This process is separate from the runtime app and is intended for creating and exporting custom gesture models.
- Set up a compatible environment (Linux, Python 3.10‑3.11) and install the required package:
pip install mediapipe-model-maker
- Use the training script located at
train_installer_gen/train.pyto start model training. Note: edit the script to set the folder path of your dataset folder. The dataset should be structured as folders of images, where each folder name represents the gesture label (e.g.,thumbs_up/,wave/, etc.). - Before or after training, run
make_none.pyto generate the required "none" files; you will need to edit that script to point the dataset folder path to your own data. - When the process completes the exported model will be written to
exported_model/gesture_recognizer.task. - Import the resulting
.taskfile using the choose model option in the app's settings.
This is separate from the runtime app and intended for creating/exporting gesture models.
- Camera cannot start:
- Close other apps that may own the camera.
- Re-open Settings and select the correct device.
- No virtual camera in external apps:
- Verify your virtual camera driver/setup is installed and active.
- App already running:
- Sevue is single-instance; launching again activates the existing window.
See LICENSE.