Turbo Whisper is a free, open source voice dictation and transcription app for Linux, macOS, and Windows. A SuperWhisper alternative with a beautiful GUI for real-time speech to text (STT). Supports 99 languages via OpenAI Whisper. Perfect for accessibility, RSI, and hands-free typing.
Voice dictation | Speech to text (STT) | Voice typing | Transcription | Open source | Multilingual | Hands-free
Screencast_20260122_152835.webm
- Global hotkey (Ctrl+Shift+Space) to start/stop recording from anywhere
- Waveform visualization - see your audio levels in real-time with an animated orb
- OpenAI API compatible - works with OpenAI Whisper API or self-hosted faster-whisper-server
- Multilingual - supports 99 languages via Whisper
- Auto-type - transcribed text is typed directly into the focused window
- Clipboard support - text is also copied to clipboard
- System tray - runs quietly in the background with autostart support
- Cross-platform - Linux, macOS, and Windows support
- Accessibility - great for RSI, carpal tunnel, or anyone preferring hands-free input
Turbo Whisper is ideal for voice input with terminal-based AI tools:
- Claude Code - Anthropic's CLI for Claude
- Aider - AI pair programming in your terminal
- GitHub Copilot CLI - Voice commands for git and shell
- Open Interpreter - Natural language to code execution
- Any terminal app - Works anywhere you can type text
Simply press the hotkey, speak your prompt, and the transcription is typed directly into your terminal.
Note: This feature is experimental and has limitations. See issue #23 for planned improvements.
When dictating into Claude Code, you may want to wait until Claude finishes responding before typing your text. Turbo Whisper has built-in support for this.
How it works:
- Turbo Whisper runs an HTTP server on
localhost:7878 - After transcription, it waits up to 2 seconds for a "ready" signal
- When Claude Code sends the signal, the text is typed
Setup:
- Enable in your config (
~/.config/turbo-whisper/config.json):
{
"claude_integration": true,
"claude_integration_port": 7878
}- Create a Claude Code hook at
~/.claude/hooks/post-response.sh:
#!/bin/bash
# Signal Turbo Whisper that Claude is ready for input
curl -s -X POST http://localhost:7878/ready > /dev/null 2>&1- Make it executable:
chmod +x ~/.claude/hooks/post-response.sh- Configure Claude Code to run the hook (in
~/.claude/settings.json):
{
"hooks": {
"postResponse": ["~/.claude/hooks/post-response.sh"]
}
}Without the hook: If Claude integration is enabled but no ready signal is received within 2 seconds, the text is copied to clipboard only (not typed). You'll see "Copied (Claude busy)" in the tray notification.
To disable: Set "claude_integration": false in your config for immediate typing without waiting.
sudo add-apt-repository ppa:bengweeks/turbo-whisper
sudo apt update
sudo apt install turbo-whisper# Using yay
yay -S turbo-whisper
# Using paru
paru -S turbo-whisperUbuntu/Debian
# Install system dependencies
sudo apt install python3-pyaudio portaudio19-dev xdotool xclip
# Clone and install
git clone https://github.com/knowall-ai/turbo-whisper.git
cd turbo-whisper
python3 -m venv .venv
source .venv/bin/activate
pip install -e .Fedora
sudo dnf install python3-pyaudio portaudio-devel xdotool xclip
git clone https://github.com/knowall-ai/turbo-whisper.git
cd turbo-whisper
python3 -m venv .venv
source .venv/bin/activate
pip install -e .Arch Linux (manual)
sudo pacman -S python-pyaudio portaudio xdotool xclip
git clone https://github.com/knowall-ai/turbo-whisper.git
cd turbo-whisper
python3 -m venv .venv
source .venv/bin/activate
pip install -e .# Install Homebrew dependencies
brew install portaudio
# Clone and install
git clone https://github.com/knowall-ai/turbo-whisper.git
cd turbo-whisper
python3 -m venv .venv
source .venv/bin/activate
pip install -e .# Clone the repository
git clone https://github.com/knowall-ai/turbo-whisper.git
cd turbo-whisper
# Create virtual environment
python -m venv .venv
.venv\Scripts\activate
# Install dependencies
pip install -e .
pip install pyperclip # Required for Windows clipboard/typingCreate ~/.config/turbo-whisper/config.json (Linux/macOS) or %APPDATA%\turbo-whisper\config.json (Windows):
{
"api_url": "https://api.openai.com/v1/audio/transcriptions",
"api_key": "sk-your-api-key",
"hotkey": ["ctrl", "shift", "space"],
"language": "en",
"auto_paste": true,
"copy_to_clipboard": true,
"typing_delay_ms": 5,
"waveform_color": "#00ff88",
"background_color": "#1a1a2e"
}OpenAI API:
{
"api_url": "https://api.openai.com/v1/audio/transcriptions",
"api_key": "sk-your-api-key"
}Self-hosted faster-whisper-server:
{
"api_url": "http://your-server:8000/v1/audio/transcriptions",
"api_key": ""
}# Activate virtual environment
source .venv/bin/activate # Linux/macOS
# or
.venv\Scripts\activate # Windows
# Start the application
turbo-whisper- Press Ctrl+Shift+Space to start recording
- Speak your text
- Press Ctrl+Shift+Space again to stop and transcribe
- Text is automatically typed into the focused window (wherever your cursor is)
| Shortcut | Action |
|---|---|
| Ctrl+Shift+Space | Start/stop recording (configurable) |
| Esc | Cancel recording (when window is focused) |
Edit your config to change the hotkey:
{
"hotkey": ["ctrl", "alt", "w"]
}Available modifiers: ctrl, shift, alt, super
To start Turbo Whisper automatically when you log in:
Linux (all distros):
# Create autostart directory if it doesn't exist
mkdir -p ~/.config/autostart
# Copy the desktop file (if installed via AUR/PPA)
cp /usr/share/applications/turbo-whisper.desktop ~/.config/autostart/
# Or create manually
cat > ~/.config/autostart/turbo-whisper.desktop << 'EOF'
[Desktop Entry]
Name=Turbo Whisper
Exec=turbo-whisper
Type=Application
X-GNOME-Autostart-enabled=true
EOFmacOS:
- Open System Preferences → Users & Groups → Login Items
- Click + and add Turbo Whisper
Windows:
- Press Win+R, type
shell:startup, press Enter - Create a shortcut to
turbo-whisperin that folder
You can run your own Whisper server for faster, private, and cost-free transcription using faster-whisper-server.
| Model | VRAM (GPU) | RAM (CPU) | Speed | Accuracy |
|---|---|---|---|---|
| tiny | ~1 GB | ~2 GB | Fastest | Basic |
| base | ~1 GB | ~2 GB | Very fast | Good |
| small | ~2 GB | ~4 GB | Fast | Better |
| medium | ~5 GB | ~8 GB | Moderate | Great |
| large-v3 | ~10 GB | ~16 GB | Slower | Best |
Recommendations:
- GPU with 6+ GB VRAM: Use
large-v3for best accuracy - GPU with 4 GB VRAM: Use
smallormedium - CPU only: Use
tinyorbase(expect slower transcription)
# With NVIDIA GPU (recommended)
docker run --gpus=all -p 8000:8000 \
-e WHISPER__MODEL=Systran/faster-whisper-large-v3 \
fedirz/faster-whisper-server:latest-cuda
# With smaller model (less VRAM)
docker run --gpus=all -p 8000:8000 \
-e WHISPER__MODEL=Systran/faster-whisper-small \
fedirz/faster-whisper-server:latest-cuda
# CPU only (slower, no GPU required)
docker run -p 8000:8000 \
-e WHISPER__MODEL=Systran/faster-whisper-base \
fedirz/faster-whisper-server:latest-cpuModels are downloaded automatically on first use:
| Model ID | Size |
|---|---|
Systran/faster-whisper-tiny |
~75 MB |
Systran/faster-whisper-base |
~150 MB |
Systran/faster-whisper-small |
~500 MB |
Systran/faster-whisper-medium |
~1.5 GB |
Systran/faster-whisper-large-v3 |
~3 GB |
To avoid re-downloading models on container restart:
docker run --gpus=all -p 8000:8000 \
-v ~/.cache/huggingface:/root/.cache/huggingface \
-e WHISPER__MODEL=Systran/faster-whisper-large-v3 \
fedirz/faster-whisper-server:latest-cudaUpdate your config to use the self-hosted server:
{
"api_url": "http://localhost:8000/v1/audio/transcriptions",
"api_key": ""
}curl http://localhost:8000/healthFor detailed documentation, see the docs/ directory:
- Installation Guide - Complete installation instructions for all platforms
- Solution Design - Technical architecture and cross-platform compatibility
- Troubleshooting - Common issues and solutions
If Ctrl+Shift+Space conflicts with another application, edit the config:
{
"hotkey": ["ctrl", "alt", "w"]
}Install the pre-built wheel:
pip install pipwin
pipwin install pyaudioGrant accessibility permissions to your terminal app in System Preferences → Security & Privacy → Privacy → Accessibility.
For more troubleshooting tips, see docs/TROUBLESHOOTING.adoc.
MIT License - see LICENSE for details.
Voice dictation Linux, speech to text, STT, voice typing, transcription, transcribe audio, OpenAI Whisper GUI, dictation software, speech recognition, voice input, hands-free typing, accessibility, SuperWhisper alternative, faster-whisper, voice to text CLI, terminal dictation, free open source, multilingual, 99 languages, RSI, carpal tunnel, real-time transcription, local whisper, offline speech recognition, nerd-dictation alternative, voice coding, voice input terminal, how to dictate on Linux, best voice dictation Linux, Ubuntu voice typing, Arch Linux dictation.
Inspired by SuperWhisper for macOS.