Voice-to-clipboard tool with global hotkey support for Linux and macOS. Press a hotkey, speak your text, release - it's in your clipboard. Fast, accurate, and runs completely offline.
curl -sSL https://raw.githubusercontent.com/yourusername/clipvoice/main/install.sh | bash
Or clone and run:
git clone https://github.com/yourusername/clipvoice.git
cd clipvoice
chmod +x install.sh
./install.sh
Ubuntu/Debian:
sudo apt-get update
sudo apt-get install -y portaudio19-dev xclip python3-pip
Fedora/RHEL:
sudo dnf install -y portaudio-devel xclip python3-pip
Arch Linux:
sudo pacman -S portaudio xclip python-pip
macOS:
brew install portaudio
# Clone repository
git clone https://github.com/yourusername/clipvoice.git
cd clipvoice
# Install with Poetry
poetry install # Core dependencies
poetry install --with ml # ML dependencies (PyTorch, transformers)
poetry install --with nemo # Optional: NeMo for Parakeet models
# Or use Make
make install
Recommended Models:
poetry install --with mlpoetry install --with mlpoetry install --with ml --with nemopoetry install --with ml --with nemoNote: NVIDIA models (Canary, Parakeet) require NeMo toolkit and may have dependency conflicts. Whisper is easier but NVIDIA models offer better accuracy.
# Using Poetry
poetry run clipvoice
# Using Make
make run
# With verbose logging
poetry run clipvoice --verbose
Ctrl+Shift+Space)$ poetry run clipvoice
2024-02-04 10:30:00 - INFO - Starting ClipVoice v0.1.0...
2024-02-04 10:30:01 - INFO - β Audio recorder initialized
2024-02-04 10:30:01 - INFO - β Clipboard manager initialized
2024-02-04 10:30:01 - INFO - β Hotkey listener initialized: <ctrl>+<shift>+<space>
2024-02-04 10:30:02 - INFO - Loading STT model: nvidia/canary-1b...
2024-02-04 10:30:15 - INFO - β STT engine loaded
2024-02-04 10:30:15 - INFO - ClipVoice is running! Press hotkey to record.
2024-02-04 10:30:15 - INFO - Hotkey: <ctrl>+<shift>+<space>
2024-02-04 10:30:15 - INFO - Press Ctrl+C to exit
[Press Ctrl+Shift+Space and speak: "Hello, this is a test"]
2024-02-04 10:30:20 - INFO - Starting recording...
2024-02-04 10:30:23 - INFO - Stopping recording...
2024-02-04 10:30:23 - INFO - Transcribing audio...
2024-02-04 10:30:24 - INFO - Transcription completed in 0.85s: Hello, this is a test.
2024-02-04 10:30:24 - INFO - Text copied to clipboard successfully
[Now paste anywhere with Ctrl+V!]
make config
# Or manually:
mkdir -p ~/.config/clipvoice
cp config.toml.example ~/.config/clipvoice/config.toml
nano ~/.config/clipvoice/config.toml
[model]
engine = "whisper" # Options: whisper (recommended), canary, parakeet, faster-whisper
model_name = "openai/whisper-medium" # Most reliable option
[audio]
sample_rate = 16000
min_recording_duration = 0.5 # Prevent accidental taps
silence_threshold = 0.01 # RMS threshold for silence detection
silence_duration = 1.0 # Auto-stop after 1s of silence
[hotkey]
combination = "<ctrl>+<shift>+<space>" # Customize your hotkey
[language]
code = "en" # Language code
auto_detect = false # Auto-detect language
[clipboard]
auto_paste = false
trim_whitespace = true
auto_capitalize = true
add_period = false
[ui]
enable_notifications = true
show_preview = true
[performance]
preload_model = true # Faster first transcription
use_gpu = true # Use CUDA if available
| Model | Speed | Accuracy | GPU Required | Setup | Best For |
|---|---|---|---|---|---|
openai/whisper-medium | Medium | ββββ | Optional | β Easy | Beginners - most reliable, works everywhere |
distil-whisper/distil-large-v3 | Fast | βββββ | Optional | β Easy | Speed - 6x faster, within 1% WER |
openai/whisper-large-v3 | Slow | βββββ | Recommended | β Easy | Multilingual - 99+ languages |
nvidia/canary-1b | Medium | βββββ | Yes (NVIDIA) | β οΈ Advanced | Best accuracy - requires NeMo, 4 languages + translation |
nvidia/canary-1b-v2 | Medium | βββββ | Yes (NVIDIA) | β οΈ Advanced | European languages - requires NeMo, 25 languages |
nvidia/parakeet-tdt-1.1b | Fast | ββββ | Yes (NVIDIA) | β οΈ Advanced | Fast + accurate - requires NeMo |
Easy Setup (Recommended for Beginners):
openai/whisper-medium (most reliable, no hassle)distil-whisper/distil-large-v3 (6x faster, near-identical accuracy)openai/whisper-large-v3 (99+ languages)openai/whisper-base or openai/whisper-smallAdvanced Setup (Best Performance, Requires NeMo):
nvidia/canary-1b (state-of-the-art, multilingual)nvidia/canary-1b (speech-to-text translation)nvidia/parakeet-tdt-1.1b (fast inference)See NeMo Installation below for NVIDIA model setup.
clipvoice/
βββ clipvoice/ # Main package
β βββ audio/ # Audio recording & processing
β βββ stt/ # Speech-to-text engines
β βββ clipboard/ # Clipboard management
β βββ hotkey/ # Global hotkey listener
β βββ config/ # Configuration system
β βββ ui/ # Notifications & UI
βββ tests/ # Test suite
βββ install.sh # Installation script
βββ Makefile # Common tasks
βββ pyproject.toml # Dependencies
make help # Show all available commands
make install # Full installation
make run # Run ClipVoice
make test # Run tests
make format # Format code with black
make lint # Lint with ruff
make clean # Clean build artifacts
poetry run pytest
# Or
make test
./uninstall.sh
# Or
make uninstall
This will:
make uninstall-quick
Removes ClipVoice but keeps configuration and downloaded models.
# Stop ClipVoice
pkill -f clipvoice
# Remove virtual environment
rm -rf .venv/
poetry env remove --all
# Remove configuration (optional)
rm -rf ~/.config/clipvoice
# Remove cached models (optional, ~2GB)
rm -rf ~/.cache/huggingface
# Remove system dependencies (optional)
sudo apt-get remove portaudio19-dev xclip # Ubuntu/Debian
To use NVIDIA models (Canary, Parakeet), you need to install NeMo toolkit:
# Method 1: Run the install script and choose "yes" when asked about NeMo
./install.sh
# Method 2: Install manually and fix dependencies
poetry install --with ml --with nemo
./fix_nemo_deps.sh
The script will:
# Step 1: Install NeMo
poetry install --with ml --with nemo
# Step 2: Fix dependencies (CRITICAL!)
./fix_nemo_deps.sh
# Or manually:
poetry run pip uninstall -y numpy pyarrow datasets
poetry run pip install "numpy>=1.24.0,<2.0.0" "pyarrow<21.0.0" "datasets>=2.0.0,<3.0.0" "matplotlib>=3.0.0"
Critical Versions for NeMo:
numpy>=1.24.0,<2.0.0 - NeMo requires NumPy 1.x (np.sctypes removed in 2.0)pyarrow<21.0.0 - NeMo requires PyExtensionType (removed in 21.0.0+)datasets>=2.0.0,<3.0.0 - Compatible with pyarrow <21.0.0matplotlib>=3.0.0 - Required by NeMo VAD utilitiespoetry run python -c "import nemo.collections.asr; print('NeMo installed successfully!')"
NumPy 2.0 Compatibility (np.sctypes was removed in NumPy 2.0):
NeMo doesn't support NumPy 2.x yet. This is a common error.
# Fix: Downgrade to NumPy 1.x
poetry run pip install "numpy>=1.24.0,<2.0.0"
PyArrow Compatibility (module 'pyarrow' has no attribute 'PyExtensionType'):
PyArrow 21.0.0+ removed PyExtensionType which NeMo requires.
# Fix: Install compatible version
poetry run pip uninstall -y pyarrow datasets
poetry run pip install "pyarrow<21.0.0" "datasets>=2.0.0,<3.0.0"
Quick Fix All NeMo Errors:
./fix_nemo_deps.sh
If NeMo installation fails completely:
# Ubuntu/Debian
sudo apt-get install portaudio19-dev
# Fedora
sudo dnf install portaudio-devel
# macOS
brew install portaudio
# Install xclip for X11
sudo apt-get install xclip
# Or wl-clipboard for Wayland
sudo apt-get install wl-clipboard
Models are downloaded from Hugging Face on first use (~2GB for Canary). Ensure you have:
Contributions welcome! See TASKS.md for current development tasks.
make testMIT License - see LICENSE file for details.
Made with β€οΈ for productivity
Press a key, speak your mind, paste anywhere.
Python
79.8%
Shell
16.7%
Makefile
3.5%
Voice-to-clipboard tool with global hotkey support for Linux and macOS. Press a hotkey, speak your text, release - it's in your clipboard. Fast, accurate, and runs completely offline.
curl -sSL https://raw.githubusercontent.com/yourusername/clipvoice/main/install.sh | bash
Or clone and run:
git clone https://github.com/yourusername/clipvoice.git
cd clipvoice
chmod +x install.sh
./install.sh
Ubuntu/Debian:
sudo apt-get update
sudo apt-get install -y portaudio19-dev xclip python3-pip
Fedora/RHEL:
sudo dnf install -y portaudio-devel xclip python3-pip
Arch Linux:
sudo pacman -S portaudio xclip python-pip
macOS:
brew install portaudio
# Clone repository
git clone https://github.com/yourusername/clipvoice.git
cd clipvoice
# Install with Poetry
poetry install # Core dependencies
poetry install --with ml # ML dependencies (PyTorch, transformers)
poetry install --with nemo # Optional: NeMo for Parakeet models
# Or use Make
make install
Recommended Models:
poetry install --with mlpoetry install --with mlpoetry install --with ml --with nemopoetry install --with ml --with nemoNote: NVIDIA models (Canary, Parakeet) require NeMo toolkit and may have dependency conflicts. Whisper is easier but NVIDIA models offer better accuracy.
# Using Poetry
poetry run clipvoice
# Using Make
make run
# With verbose logging
poetry run clipvoice --verbose
Ctrl+Shift+Space)$ poetry run clipvoice
2024-02-04 10:30:00 - INFO - Starting ClipVoice v0.1.0...
2024-02-04 10:30:01 - INFO - β Audio recorder initialized
2024-02-04 10:30:01 - INFO - β Clipboard manager initialized
2024-02-04 10:30:01 - INFO - β Hotkey listener initialized: <ctrl>+<shift>+<space>
2024-02-04 10:30:02 - INFO - Loading STT model: nvidia/canary-1b...
2024-02-04 10:30:15 - INFO - β STT engine loaded
2024-02-04 10:30:15 - INFO - ClipVoice is running! Press hotkey to record.
2024-02-04 10:30:15 - INFO - Hotkey: <ctrl>+<shift>+<space>
2024-02-04 10:30:15 - INFO - Press Ctrl+C to exit
[Press Ctrl+Shift+Space and speak: "Hello, this is a test"]
2024-02-04 10:30:20 - INFO - Starting recording...
2024-02-04 10:30:23 - INFO - Stopping recording...
2024-02-04 10:30:23 - INFO - Transcribing audio...
2024-02-04 10:30:24 - INFO - Transcription completed in 0.85s: Hello, this is a test.
2024-02-04 10:30:24 - INFO - Text copied to clipboard successfully
[Now paste anywhere with Ctrl+V!]
make config
# Or manually:
mkdir -p ~/.config/clipvoice
cp config.toml.example ~/.config/clipvoice/config.toml
nano ~/.config/clipvoice/config.toml
[model]
engine = "whisper" # Options: whisper (recommended), canary, parakeet, faster-whisper
model_name = "openai/whisper-medium" # Most reliable option
[audio]
sample_rate = 16000
min_recording_duration = 0.5 # Prevent accidental taps
silence_threshold = 0.01 # RMS threshold for silence detection
silence_duration = 1.0 # Auto-stop after 1s of silence
[hotkey]
combination = "<ctrl>+<shift>+<space>" # Customize your hotkey
[language]
code = "en" # Language code
auto_detect = false # Auto-detect language
[clipboard]
auto_paste = false
trim_whitespace = true
auto_capitalize = true
add_period = false
[ui]
enable_notifications = true
show_preview = true
[performance]
preload_model = true # Faster first transcription
use_gpu = true # Use CUDA if available
| Model | Speed | Accuracy | GPU Required | Setup | Best For |
|---|---|---|---|---|---|
openai/whisper-medium | Medium | ββββ | Optional | β Easy | Beginners - most reliable, works everywhere |
distil-whisper/distil-large-v3 | Fast | βββββ | Optional | β Easy | Speed - 6x faster, within 1% WER |
openai/whisper-large-v3 | Slow | βββββ | Recommended | β Easy | Multilingual - 99+ languages |
nvidia/canary-1b | Medium | βββββ | Yes (NVIDIA) | β οΈ Advanced | Best accuracy - requires NeMo, 4 languages + translation |
nvidia/canary-1b-v2 | Medium | βββββ | Yes (NVIDIA) | β οΈ Advanced | European languages - requires NeMo, 25 languages |
nvidia/parakeet-tdt-1.1b | Fast | ββββ | Yes (NVIDIA) | β οΈ Advanced | Fast + accurate - requires NeMo |
Easy Setup (Recommended for Beginners):
openai/whisper-medium (most reliable, no hassle)distil-whisper/distil-large-v3 (6x faster, near-identical accuracy)openai/whisper-large-v3 (99+ languages)openai/whisper-base or openai/whisper-smallAdvanced Setup (Best Performance, Requires NeMo):
nvidia/canary-1b (state-of-the-art, multilingual)nvidia/canary-1b (speech-to-text translation)nvidia/parakeet-tdt-1.1b (fast inference)See NeMo Installation below for NVIDIA model setup.
clipvoice/
βββ clipvoice/ # Main package
β βββ audio/ # Audio recording & processing
β βββ stt/ # Speech-to-text engines
β βββ clipboard/ # Clipboard management
β βββ hotkey/ # Global hotkey listener
β βββ config/ # Configuration system
β βββ ui/ # Notifications & UI
βββ tests/ # Test suite
βββ install.sh # Installation script
βββ Makefile # Common tasks
βββ pyproject.toml # Dependencies
make help # Show all available commands
make install # Full installation
make run # Run ClipVoice
make test # Run tests
make format # Format code with black
make lint # Lint with ruff
make clean # Clean build artifacts
poetry run pytest
# Or
make test
./uninstall.sh
# Or
make uninstall
This will:
make uninstall-quick
Removes ClipVoice but keeps configuration and downloaded models.
# Stop ClipVoice
pkill -f clipvoice
# Remove virtual environment
rm -rf .venv/
poetry env remove --all
# Remove configuration (optional)
rm -rf ~/.config/clipvoice
# Remove cached models (optional, ~2GB)
rm -rf ~/.cache/huggingface
# Remove system dependencies (optional)
sudo apt-get remove portaudio19-dev xclip # Ubuntu/Debian
To use NVIDIA models (Canary, Parakeet), you need to install NeMo toolkit:
# Method 1: Run the install script and choose "yes" when asked about NeMo
./install.sh
# Method 2: Install manually and fix dependencies
poetry install --with ml --with nemo
./fix_nemo_deps.sh
The script will:
# Step 1: Install NeMo
poetry install --with ml --with nemo
# Step 2: Fix dependencies (CRITICAL!)
./fix_nemo_deps.sh
# Or manually:
poetry run pip uninstall -y numpy pyarrow datasets
poetry run pip install "numpy>=1.24.0,<2.0.0" "pyarrow<21.0.0" "datasets>=2.0.0,<3.0.0" "matplotlib>=3.0.0"
Critical Versions for NeMo:
numpy>=1.24.0,<2.0.0 - NeMo requires NumPy 1.x (np.sctypes removed in 2.0)pyarrow<21.0.0 - NeMo requires PyExtensionType (removed in 21.0.0+)datasets>=2.0.0,<3.0.0 - Compatible with pyarrow <21.0.0matplotlib>=3.0.0 - Required by NeMo VAD utilitiespoetry run python -c "import nemo.collections.asr; print('NeMo installed successfully!')"
NumPy 2.0 Compatibility (np.sctypes was removed in NumPy 2.0):
NeMo doesn't support NumPy 2.x yet. This is a common error.
# Fix: Downgrade to NumPy 1.x
poetry run pip install "numpy>=1.24.0,<2.0.0"
PyArrow Compatibility (module 'pyarrow' has no attribute 'PyExtensionType'):
PyArrow 21.0.0+ removed PyExtensionType which NeMo requires.
# Fix: Install compatible version
poetry run pip uninstall -y pyarrow datasets
poetry run pip install "pyarrow<21.0.0" "datasets>=2.0.0,<3.0.0"
Quick Fix All NeMo Errors:
./fix_nemo_deps.sh
If NeMo installation fails completely:
# Ubuntu/Debian
sudo apt-get install portaudio19-dev
# Fedora
sudo dnf install portaudio-devel
# macOS
brew install portaudio
# Install xclip for X11
sudo apt-get install xclip
# Or wl-clipboard for Wayland
sudo apt-get install wl-clipboard
Models are downloaded from Hugging Face on first use (~2GB for Canary). Ensure you have:
Contributions welcome! See TASKS.md for current development tasks.
make testMIT License - see LICENSE file for details.
Made with β€οΈ for productivity
Press a key, speak your mind, paste anywhere.
Python
79.8%
Shell
16.7%
Makefile
3.5%