WhisperFlow-style voice dictation for Linux
A lightweight voice-to-text tool that uses Groq's Whisper API for transcription and LLM for formatting. Works with any X11/Wayland window manager.
- Fast transcription using Groq's Whisper Large V3 Turbo
- Smart formatting with automatic punctuation and capitalization
- Modern Slint GUI - Beautiful, fast, cross-platform UI
- CPU-optimized - No more high CPU usage after closing
- System tray icon with status indicators
- 50+ languages including Hindi, Arabic, Chinese, and more
- Microphone selection via tray menu
- Keyboard shortcut toggle (start/stop recording)
- Pastes directly into any focused text field
- Recording history with corrections and timing data
[Press shortcut] → Recording...
[Speak] "hello world this is a test"
[Press shortcut] → Processing...
[Output] "Hello world, this is a test."
- Linux with X11 or Wayland
- PipeWire or PulseAudio
- Rust/Cargo (for building GUI)
- Groq API key (free tier available)
git clone https://github.com/chukfinley/fluistern.git
cd fluistern
./install.shThe installer will:
- Check and install dependencies (if needed)
- Build the modern Slint GUI (Release mode, optimized)
- Copy files to
~/.local/share/fluistern/ - Create
fluisterncommand in~/.local/bin/ - Set up systemd service
- Prompt for Groq API key
After install, you can delete the cloned folder.
The installer will check for these:
Required:
cargo/rust- Rust toolchain for building GUIyad- tray iconxdotool- simulating pastexclip- clipboard accessffmpeg- audio compressionjq- JSON parsingcurl- API callspw-record(PipeWire)sqlite3- database for recording history
On Ubuntu/Debian:
sudo apt install cargo yad xdotool xclip ffmpeg jq curl pipewire sqlite3On Arch/Manjaro:
sudo pacman -S rust yad xdotool xclip ffmpeg jq curl pipewire sqlite3- Go to console.groq.com/keys
- Create a free account
- Generate an API key
- The installer will prompt you, or edit
~/.local/share/fluistern/.env
Edit ~/.local/share/fluistern/.env:
GROQ_API_KEY="your-key" # Required
LANGUAGE="de" # Optional: en, de, es, fr, hi, etc.
MIC_SOURCE="" # Optional: specific mic (use tray menu to select)
NOTIFICATIONS="true" # Show notifications (true/false)
TRAY_ICON="true" # Show tray icon (true/false)Add a keybinding in your WM config to run fluistern:
| WM/DE | Config | Example |
|---|---|---|
| sxhkd | ~/.config/sxhkd/sxhkdrc |
super + r fluistern |
| Hyprland | ~/.config/hypr/hyprland.conf |
bind = SUPER, R, exec, fluistern |
| i3/sway | ~/.config/i3/config |
bindsym $mod+r exec fluistern |
| dwm | config.h |
{ MODKEY, XK_r, spawn, SHCMD("fluistern") } |
- Start the daemon:
systemctl --user start fluistern - Press your keybind to start recording
- Speak
- Press keybind again to stop and transcribe
- Text appears in your focused window
- Toggle Recording - Start/stop recording
- Einstellungen & Historie - Open GUI for settings, logs, and recording history
- Select Microphone - Choose input device
- Select Language - Set transcription language (50+ languages)
- Quit - Stop the daemon
Open the modern Slint-based GUI from the tray menu to access:
- 📝 Recording History - View all recordings with expandable cards showing Whisper raw output, LLM formatted output, and correction fields
- ✏️ Corrections - Teach the system by correcting misheard words
- 🪲 Debug Logs - Real-time logs with auto-refresh for troubleshooting
- ⚙️ Settings - Configure API key, language, microphone, system prompt
The GUI features a clean, modern design with:
- Tabbed interface for easy navigation
- Expandable recording cards
- Real-time log monitoring (only refreshes when file changes - CPU optimized!)
- Professional blue color scheme
Auto-detect, English, German, Spanish, French, Hindi, Italian, Portuguese, Dutch, Polish, Russian, Chinese, Japanese, Korean, Arabic, Turkish, Vietnamese, Thai, Indonesian, Ukrainian, Czech, Greek, Hebrew, Hungarian, Swedish, Danish, Finnish, Norwegian, Romanian, Bengali, Tamil, Telugu, Urdu, Persian, and many more.
Keybind → Start recording (16kHz mono WAV)
Keybind → Stop → Compress to Opus (~30x smaller)
→ Upload to Groq Whisper API
→ Format with Groq LLM (punctuation, caps)
→ Pastes into focused window (Ctrl+V)
After installation:
~/.local/share/fluistern/
├── fluistern-gui # Rust GUI binary (settings, history, logs)
├── voice-input.sh # Main toggle script
├── voice-input-daemon.sh # Tray daemon
├── select-mic.sh # Microphone selector
├── select-language.sh # Language selector
├── .env # Your config (API key, language, mic)
├── history.db # SQLite database for recordings
└── icons/ # Tray icons
~/.local/bin/fluistern # Symlink to run the tool
fluistern # Toggle recording
systemctl --user start fluistern # Start daemon
systemctl --user stop fluistern # Stop daemon
systemctl --user status fluistern # Check status
journalctl --user -u fluistern -f # View logssystemctl --user stop fluistern
systemctl --user disable fluistern
rm -rf ~/.local/share/fluistern ~/.local/bin/fluistern
rm ~/.config/systemd/user/fluistern.service- Install
yad:sudo pacman -S yad - Make sure you have a system tray
- Set specific language in tray menu (auto-detect can miss)
- Speak clearly, reduce background noise
- Check microphone selection
- Mostly upload time to Groq API
- Keep recordings under 30 seconds for <5s processing
MIT
- Groq - Fast Whisper API
- OpenAI Whisper - Speech recognition model