Skip to main content

Cross-platform voice-to-text typing assistant with RealtimeSTT, GPU acceleration and automatic CPU fallback

Project description

STT Type v3.0.0

Cross-platform voice-to-text typing assistant with real-time streaming transcription.

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 WhisperLive for continuous transcription while you speak. Interim results appear in the console in real-time.
  • 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 GUIstttype --config to 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, or pw-play for 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)

  1. Hold F2 — A transparent red dot appears, microphone starts streaming to local WhisperLive server
  2. Speak — Interim transcription appears in the console in real-time
  3. Release F2 — Red dot disappears, streaming stops, final text is typed at your cursor

Hold Mode (legacy)

  1. Hold F2 — A transparent red dot appears, microphone starts recording
  2. Release F2 — Red dot disappears, recording stops
  3. Transcribe — Whisper processes the recorded audio
  4. 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.0.0 Major: 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.0.0
License: MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stttype-3.1.0.tar.gz (24.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

stttype-3.1.0-py3-none-any.whl (23.6 kB view details)

Uploaded Python 3

File details

Details for the file stttype-3.1.0.tar.gz.

File metadata

  • Download URL: stttype-3.1.0.tar.gz
  • Upload date:
  • Size: 24.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.1

File hashes

Hashes for stttype-3.1.0.tar.gz
Algorithm Hash digest
SHA256 15833e098fc73fc11cf88602ef317fc0dee5bc804bc5b17c86de2d7e3ccfe46c
MD5 d1a81bf5579763935ff6edf859e433d8
BLAKE2b-256 f031c02952b666afbf7057398629e77392d263de5adccada9bec3e85c0414e9b

See more details on using hashes here.

File details

Details for the file stttype-3.1.0-py3-none-any.whl.

File metadata

  • Download URL: stttype-3.1.0-py3-none-any.whl
  • Upload date:
  • Size: 23.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.1

File hashes

Hashes for stttype-3.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5b737b1e79148e2b736b3025ed1fbc0b4b2ef4c6d83fe45e56d7d4064c6d7714
MD5 272dc2a273d057902d06b2ae597eac5d
BLAKE2b-256 1d69cf213a73b5ca7a60041bd3746b62f1f7f019ec88a2d5a94e12e3e980b113

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page