Offline speech-to-text by hotkey: hold a key (or mouse button), speak, release — text is recognized locally and pasted into the active window.
🇷🇺 Russian: README.ru.md
pip install neededgit clone <repo-url>
cd dictate
Then run:
| OS | Command |
|---|---|
| 🪟 Windows | .\dictate.ps1 (run as Administrator) |
| 🐧 Linux | sudo bash dictate.sh |
| 🍎 macOS | bash dictate.sh |
On first launch you'll be asked to:
Ctrl + Space) — saved to voice_key.json[1] Whisper or [2] GigaAMBoth choices are remembered. Only the dependencies for the selected backend are installed.
Requires Python 3.10+ pre-installed.
| Whisper large-v3 | GigaAM v3 e2e_rnnt | |
|---|---|---|
| Languages | 99 | Russian only |
| Russian WER | ~21% | ~11% |
| Punctuation | ✅ | ✅ (notably better, esp. commas) |
| Model size | ~3 GB | ~0.8 GB |
| Extra deps | small | heavy (torch + transformers, ~2 GB) |
Pick GigaAM for Russian, Whisper for everything else.
Hold the hotkey, speak a phrase, release — recognized text is pasted into the active app.
Reconfigure:
python dictate.py --rebind — change the hotkeypython dictate.py --remodel — switch the modelBoth backends run on NVIDIA GPU (default) or CPU. For GPU you need a recent NVIDIA driver — verify with nvidia-smi. To force CPU, edit DEVICE = "cpu" in dictate.py.
If faster-whisper errors out on CUDA/cuDNN, pin a compatible version: pip install --force-reinstall ctranslate2==4.4.0.
Whisper sometimes hallucinates phrases like "Thanks for watching" on silence. hallucinations.txt strips them from the output:
some phrase — exact match~subscribe — substring^thanks.* — regex# comment — commentGPL-3.0 — see LICENSE.
9 commits
Python
93.4%
PowerShell
3.6%
Shell
3.1%
Offline speech-to-text by hotkey: hold a key (or mouse button), speak, release — text is recognized locally and pasted into the active window.
🇷🇺 Russian: README.ru.md
pip install neededgit clone <repo-url>
cd dictate
Then run:
| OS | Command |
|---|---|
| 🪟 Windows | .\dictate.ps1 (run as Administrator) |
| 🐧 Linux | sudo bash dictate.sh |
| 🍎 macOS | bash dictate.sh |
On first launch you'll be asked to:
Ctrl + Space) — saved to voice_key.json[1] Whisper or [2] GigaAMBoth choices are remembered. Only the dependencies for the selected backend are installed.
Requires Python 3.10+ pre-installed.
| Whisper large-v3 | GigaAM v3 e2e_rnnt | |
|---|---|---|
| Languages | 99 | Russian only |
| Russian WER | ~21% | ~11% |
| Punctuation | ✅ | ✅ (notably better, esp. commas) |
| Model size | ~3 GB | ~0.8 GB |
| Extra deps | small | heavy (torch + transformers, ~2 GB) |
Pick GigaAM for Russian, Whisper for everything else.
Hold the hotkey, speak a phrase, release — recognized text is pasted into the active app.
Reconfigure:
python dictate.py --rebind — change the hotkeypython dictate.py --remodel — switch the modelBoth backends run on NVIDIA GPU (default) or CPU. For GPU you need a recent NVIDIA driver — verify with nvidia-smi. To force CPU, edit DEVICE = "cpu" in dictate.py.
If faster-whisper errors out on CUDA/cuDNN, pin a compatible version: pip install --force-reinstall ctranslate2==4.4.0.
Whisper sometimes hallucinates phrases like "Thanks for watching" on silence. hallucinations.txt strips them from the output:
some phrase — exact match~subscribe — substring^thanks.* — regex# comment — commentGPL-3.0 — see LICENSE.
9 commits
Python
93.4%
PowerShell
3.6%
Shell
3.1%