Cross-platform voice-to-text typing assistant with RealtimeSTT, GPU acceleration and automatic CPU fallback
Project description
STT Type v3.1.0
Cross-platform voice-to-text typing assistant with real-time streaming transcription powered by RealtimeSTT.
Hold F2 (configurable) to stream your voice in real-time, release to type the final transcribed text at your cursor position.
What's New in v3.0.0
- Real-time streaming mode — Uses RealtimeSTT for continuous transcription while you speak. Interim results are typed as you speak.
- Hold mode (legacy) — Still available! Record on hold, transcribe on release using faster-whisper directly.
- Mode selector — Choose between Streaming and Hold in
stttype --config - Fully offline — No internet required after initial model download
Features
- Real-time streaming — See transcription progress as you speak (Streaming mode)
- Cross-platform — Works on Windows, Linux, and macOS
- Hold hotkey to record/stream — Audio captures while key is held (default: F2)
- Visual indicator — Transparent red dot with hotkey label appears in top-right corner while recording
- Bell sounds — Audio feedback when recording starts/stops
- GPU-accelerated STT — Uses faster-whisper on your NVIDIA GPU
- Auto CPU fallback — Automatically falls back to CPU if GPU is not available
- Clipboard typing — Types text via Ctrl+V paste for reliability (no key interference)
- System tray mode — Runs silently in background
- Auto-startup — Starts automatically on login (Windows)
- Settings GUI —
stttype --configto change model, language, device, compute type, hotkey, and mode
Requirements
- Python 3.9+
- Microphone
- NVIDIA GPU with CUDA support (optional, for GPU mode)
- Linux:
paplay,aplay, orpw-playfor sound feedback (auto-detected)
Installation
From PyPI (Recommended)
pip install stttype
Prerequisites (Optional GPU Support)
Install PyTorch with CUDA support for GPU acceleration:
# Windows/Linux with CUDA 11.8
pip install torch torchaudio --index-url https://download.pytorch.org/whl/cu118
# macOS (CPU only, no CUDA)
pip install torch torchaudio
Without PyTorch, STT Type will still work — it automatically falls back to CPU.
Windows (Local Install)
cd "E:\Lucas\STT Type"
.\install.ps1
Then restart PowerShell.
Linux
cd /path/to/stttype
chmod +x install.sh
./install.sh
If sounddevice fails, install PortAudio:
# Debian/Ubuntu
sudo apt-get install portaudio19-dev
# Fedora
sudo dnf install portaudio-devel
# Arch
sudo pacman -S portaudio
For sound feedback, ensure one of these is installed:
# PulseAudio (most desktop distros)
pulseaudio --version
# PipeWire
pw-play --version
# ALSA (fallback)
aplay --version
macOS
cd /path/to/stttype
chmod +x install.sh
./install.sh
If sounddevice fails, install PortAudio:
brew install portaudio
Note: On macOS, you need to grant Accessibility permissions for pynput to capture global hotkeys. Go to System Settings > Privacy & Security > Accessibility and add your terminal application.
Commands
Once installed, stttype works from any terminal.
| Command | Description |
|---|---|
stttype --start |
Start STT Type in background |
stttype --shutdown |
Stop all STT Type processes |
stttype --status |
Check if STT Type is running |
stttype --restart |
Restart STT Type |
stttype --config |
Open settings GUI |
stttype --addtostartup |
Add to startup (Windows only) |
stttype --rmtostartup |
Remove from startup (Windows only) |
stttype --model <size> |
Set Whisper model (tiny/base/small/medium/large-v3) |
stttype --lang <code> |
Set language (en/zh/auto/etc) |
stttype --help |
Show help |
Examples
# Start with default settings
stttype --start
# Start with a larger model for better accuracy
stttype --start --model small
# Start with Chinese language
stttype --start --lang zh
# Open settings GUI
stttype --config
Settings GUI
Run stttype --config to open a settings window where you can configure:
| Setting | Options |
|---|---|
| Mode | Streaming (real-time), Hold (legacy) |
| Whisper Model | tiny, base, small, medium, large-v3 |
| Language | Auto-detect, English, Chinese, Spanish, French, German, Japanese, Korean, Russian, Italian, Portuguese, Arabic, Hindi |
| Device | Auto (GPU if available), GPU (CUDA), CPU |
| Compute Type | Auto, Float16 (GPU), Int8 (CPU) |
| Hotkey | F1 - F12 |
Settings are saved to ~/.config/stttype/config.json and persist across restarts.
How It Works
Streaming Mode (default)
- Hold F2 — A transparent red dot appears, microphone starts streaming to local WhisperLive server
- Speak — Interim transcription appears in the console in real-time
- Release F2 — Red dot disappears, streaming stops, final text is typed at your cursor
Hold Mode (legacy)
- Hold F2 — A transparent red dot appears, microphone starts recording
- Release F2 — Red dot disappears, recording stops
- Transcribe — Whisper processes the recorded audio
- Text is pasted — Result is pasted at your cursor position via Ctrl+V
Models
| Model | Size | VRAM | Speed | Accuracy |
|---|---|---|---|---|
tiny |
39 MB | ~1 GB | Fastest | Basic |
base |
74 MB | ~1 GB | Fast | Good |
small |
244 MB | ~2 GB | Medium | Better |
medium |
769 MB | ~5 GB | Slower | Best |
large-v3 |
1550 MB | ~10 GB | Slowest | Excellent |
Default is base - a good balance of speed and accuracy.
Uninstall
Windows
cd "E:\Lucas\STT Type"
.\uninstall.ps1
Linux/macOS
cd /path/to/stttype
chmod +x uninstall.sh
./uninstall.sh
Troubleshooting
| Issue | Solution |
|---|---|
stttype not found |
Restart terminal after installation |
| "CUDA not available" | Install NVIDIA drivers and CUDA toolkit, or STT Type will auto-fallback to CPU |
| No sound on start/stop (Linux) | Install pulseaudio-utils, alsa-utils, or pipewire |
| No overlay on Linux | Ensure $DISPLAY is set (e.g., DISPLAY=:0 stttype --start) |
| Text not typing | Make sure the target window is focused |
| Model download fails | Check internet connection |
| Hotkeys don't work (macOS) | Grant Accessibility permissions to your terminal |
| Hotkeys don't work (Linux) | Make sure you're running under X11 (not Wayland) |
| Garbled text when typing | Fixed in v2.0.2+ — uses clipboard paste instead of key simulation |
| Config not applied | Fixed in v2.0.5+ — CLI defaults changed to None so config values are read |
| Streaming mode slow on CPU | Use tiny or base model; or switch to Hold mode |
Version History
| Version | Changes |
|---|---|
| 3.1.0 | Major: Switched streaming engine to RealtimeSTT; real-time text appears at cursor as you speak |
| 3.0.0 | Real-time streaming via WhisperLive; mode selector (Streaming/Hold); hold-F2 UX preserved |
| 2.0.8 | Linux: pyautogui.typewrite() typing; faster bell beeps; transparent PNG overlay via PIL |
| 2.0.7 | Linux sound via WAV playback; Linux overlay fixes |
| 2.0.6 | Linux sound via WAV playback (paplay/aplay/pw-play); Linux overlay alpha transparency fallback |
| 2.0.5 | Fixed config not being used by CLI |
| 2.0.4 | README sync |
| 2.0.3 | Config value extraction fix |
| 2.0.2 | Clipboard typing fix; config applied |
| 2.0.1 | Linux DISPLAY fix |
| 2.0.0 | Config GUI, transparent indicator |
| 1.0.x | Initial releases |
Publish to PyPI
# Install build tools
pip install build twine
# Build
cd /path/to/stttype
python -m build
# Upload
python -m twine upload dist/*
When prompted:
- Username:
__token__ - Password: Your PyPI API token
Author: LucasApps
Version: 3.1.0
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 stttype-3.1.1.tar.gz.
File metadata
- Download URL: stttype-3.1.1.tar.gz
- Upload date:
- Size: 23.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4cdc19e48d415efc4d1fb358d6e6e9e0e7c0413cd4ab3a72521bc76715acc8d4
|
|
| MD5 |
060acd26da1f7bc0a4dc001ac4094e11
|
|
| BLAKE2b-256 |
649126c6b1afe6ed5a0eb3df23120bc5f81cb8c870b16ed5a7d27f1b3bf97b75
|
File details
Details for the file stttype-3.1.1-py3-none-any.whl.
File metadata
- Download URL: stttype-3.1.1-py3-none-any.whl
- Upload date:
- Size: 23.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0502fa1211d7411b62382e9940b219383cfd3a131db5859aafdd2905b2409ef5
|
|
| MD5 |
33b6fd1103a4190844e65da234e027b3
|
|
| BLAKE2b-256 |
f7766eb3d37a8f897a2d897081eec4ccf9e11c79aa4bac6739d70c279c92fb86
|