Voice-activated screen clipper for Windows
Project description
ClipTool
Voice-activated screen clipper for Windows. Say "computer clip that" and save the last few minutes of your screen + audio instantly.
Features
- Voice activation — Say "computer clip that" to save a clip hands-free
- GPU-accelerated capture — Uses DXGI (same as OBS) for zero-lag recording
- Variable frame rate — Perfect audio/video sync at any resolution and FPS
- Dual audio — Records microphone + desktop audio simultaneously with per-source volume control
- High resolution — Supports 720p, 1080p, 1440p, and native monitor resolution
- Configurable FPS — 30, 60, or 120fps capture
- System tray — Runs quietly in the background, always ready
- Hotkey —
Ctrl+Shift+F9to clip without speaking - Persistent settings — All preferences saved to
config.json
Prerequisites
| Requirement | Notes |
|---|---|
| Windows 10/11 | Required for DXGI capture |
| Python 3.10+ | Download Python |
| FFmpeg | Must be in PATH or installed via WinGet |
| Microphone | For voice commands and mic recording |
| VB-Cable (optional) | For desktop audio capture (download) |
Installation
1. Install Python
Download from python.org. Make sure to check "Add Python to PATH" during installation.
2. Install FFmpeg
Option A — WinGet (recommended):
winget install Gyan.FFmpeg
Option B — Manual:
- Download from ffmpeg.org
- Extract to
C:\ffmpeg\ - Add
C:\ffmpeg\binto your system PATH
3. Install VB-Cable (optional, for desktop audio)
Download from vb-audio.com/Cable and run the installer. This creates a virtual audio device that lets ClipTool record your desktop audio (game sounds, music, etc.).
4. Clone and install dependencies
git clone https://github.com/Sexigt/clip-tool.git
cd clip-tool
pip install -r requirements.txt
5. Run
python main.py
The app starts minimized in the system tray. The main window appears after a few seconds.
Usage
Voice Commands
Speak naturally after the wake word "computer":
| Say | Action |
|---|---|
| "computer clip that" | Save the last clip (uses default duration) |
| "computer clip last 30 seconds" | Save the last 30 seconds |
| "computer clip last 2 minutes" | Save the last 2 minutes |
The app plays a clipped.mp3 sound when a clip starts saving.
Manual Controls
| Button | Action |
|---|---|
| Clip That | Save using the default duration |
| 1min / 2min / 5min | Save that many seconds from the buffer |
| Open Folder | Open the clips folder in Explorer |
Hotkey
Press Ctrl+Shift+F9 anywhere to save a clip (uses default duration).
System Tray
Right-click the tray icon for quick access:
- Show — Bring up the main window
- Clip 1min / 5min — Quick save
- Open Folder — Browse saved clips
- Quit — Exit the app
Settings
Capture
| Setting | Options | Default | Notes |
|---|---|---|---|
| Resolution | 720p / 1080p / 1440p / Native | 1080p | Native uses your monitor's full resolution |
| FPS | 30 / 60 / 120 | 60 | Higher = smoother but more RAM |
| Quality | 70 / 85 / 95 | 95 | JPEG quality during capture. Higher = sharper |
Audio
| Setting | Range | Notes |
|---|---|---|
| Mic volume | 0–200% | Volume applied to mic audio in saved clip |
| Desktop volume | 0–200% | Volume applied to desktop audio in saved clip |
| Record Mic | On/Off | Toggle mic recording |
| Record Desktop | On/Off | Toggle desktop audio recording |
| Default duration | 30s / 1min / 2min / 5min | Duration used by "computer clip that" |
All settings are saved to ~/clip-tool/clips/config.json and restored on next launch.
File Structure
clip-tool/
├── main.py # Main application
├── requirements.txt # Python dependencies
├── audio/ # Sound effects
│ ├── clipped.mp3 # Played when clipping
│ ├── sound-on.mp3 # Played when toggling recording on
│ └── sound-off.mp3 # Played when toggling recording off
└── clips/ # Saved clips (created on first run)
├── clip_*.mp4 # Your saved clips
├── config.json # Saved settings
├── _temp/ # Temporary files (auto-cleaned)
└── cliptool.log # Error log
Memory Usage
ClipTool keeps a ring buffer of captured frames in RAM. Usage depends on resolution and FPS:
| Resolution | FPS | Buffer | ~RAM |
|---|---|---|---|
| 720p | 30 | 5 min | ~0.7 GB |
| 1080p | 60 | 5 min | ~3.6 GB |
| 1440p | 60 | 5 min | ~6.3 GB |
| Native 2K | 120 | 5 min | ~12 GB |
Lower the FPS or buffer duration if you experience memory pressure.
Troubleshooting
"ffmpeg not found"
- Make sure FFmpeg is installed and in your PATH
- Restart your terminal after installing
Voice commands not detected
- Check that your microphone is selected in the Mic dropdown
- Speak clearly after "computer" — the wake word needs to be distinct
- Check
cliptool.login the clips folder for errors
Desktop audio not recording
- Install VB-Cable
- Set VB-Cable as your default playback device, or use it as a monitoring device
- Select the loopback device in the Desktop dropdown
Clip is blurry
- Increase the Quality setting (95 recommended)
- Make sure Resolution is set to your monitor's native resolution
Audio out of sync
- The app uses variable frame rate encoding for proper sync
- If sync is off, try lowering the FPS setting
Built With
- bettercam — DXGI screen capture
- faster-whisper — Speech recognition
- customtkinter — UI framework
- FFmpeg — Video/audio encoding
- pyaudiowpatch — Audio capture
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file clip_tool-1.0.0.tar.gz.
File metadata
- Download URL: clip_tool-1.0.0.tar.gz
- Upload date:
- Size: 156.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
45730ef1edd321e3d0e6d1c8c48cada608000a325658a90386d89ff3f18a1104
|
|
| MD5 |
8ee573efcc9444ff84e40cdcd1349285
|
|
| BLAKE2b-256 |
feac4630d7f41ba4a6f77a37acdf168b2bd092d3588070471b2dca8fde75db6d
|
File details
Details for the file clip_tool-1.0.0-py3-none-any.whl.
File metadata
- Download URL: clip_tool-1.0.0-py3-none-any.whl
- Upload date:
- Size: 14.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
be99ccc8599762d8b6d3dcf13d96192625dd98f9a3309790ad2779d78cf9887b
|
|
| MD5 |
7294af24ec447ff7c44c71ad6d7997c2
|
|
| BLAKE2b-256 |
4ce143e5f2973ce18cea0bcd43a1c07654581b6ada6cd6c09dc682d8fa25296b
|