stttui: Speech To Text Terminal User Interface
v0.3.0 | Python 3.10+ | MIT License
A local, fully offline speech-to-text tool powered by faster-whisper. Record audio with a global hotkey from any window, transcribe it on-device, and get the result copied straight to your clipboard — no cloud, no API keys, no latency.
Comes with a polished terminal UI built on Textual, complete with a live audio level meter, transcription history, and on-the-fly model switching.
Features
- Fully offline — runs entirely on your machine using faster-whisper with int8 quantization. No data ever leaves your device.
- Global hotkeys — record from anywhere without focusing the terminal
- Live audio meter — real-time visual feedback while recording
- Transcription history — timestamped, scrollable log of every dictation
- Model switching — swap between
tiny,base,small,medium, andlargewhisper models on the fly - Clipboard integration — transcriptions are automatically copied and ready to paste
- Cross-platform — works on Windows, macOS, and Linux
- Three modes — rich TUI (default), lightweight CLI (
--cli), or headless (--headless) for scripting/piping
Installation
Homebrew (macOS / Linux)
brew tap aholten/tap
brew install stttui
pip / pipx
# With pipx (recommended — isolated environment)
pipx install stttui
# Or with pip
pip install stttui
From source
git clone https://github.com/aholten/sttui.git
cd stttui
pip install .
On macOS you may need to grant terminal accessibility permissions for global hotkeys. On Linux, install
portaudio(sudo apt install portaudio19-dev) andxclipfor clipboard support.
Usage
Hotkeys
These work globally — even when the terminal is not focused:
| Hotkey | Action |
|---|---|
Ctrl+Shift+Space |
Start / stop recording |
Ctrl+C |
Quit |
Workflow
- Launch the tool — the whisper model loads in the background
- Switch to any application (browser, editor, chat, etc.)
- Press Ctrl+Shift+Space to start recording
- Speak
- Press Ctrl+Shift+Space again to stop
- The transcription is copied to your clipboard — paste with Ctrl+V
TUI Mode (default)
stttui
The terminal interface includes:
- Model selector — dropdown to switch whisper models without restarting
- Status badge — shows IDLE / RECORDING / TRANSCRIBING state
- Level meter — live audio input visualization
- Transcription history — scrollable log with timestamps
- Status log — model loading progress and system messages
CLI Mode
stttui --cli
Minimal output, no UI — just hotkeys and clipboard.
Headless Mode
Record, transcribe, print to stdout, and exit. No hotkeys or UI — ideal for scripts and piping.
# Record until crtl+shift+space is pressed
stttui --headless
# Record for exactly 10 seconds
stttui --headless --duration 10
# Pipe transcription to another command
stttui --headless --duration 5 | xargs echo "You said:"
Status messages go to stderr, transcription goes to stdout.
Options
| Flag | Description | Default |
|---|---|---|
--cli |
Run in CLI-only mode (no TUI) | off |
--headless |
Record, transcribe, print to stdout, and exit | off |
--duration |
Recording duration in seconds (headless mode; omit to wait for Enter) | — |
--model |
Whisper model size | base |
--version |
Print version and exit | — |
# Example: launch with the small model
stttui --model small
Model Sizes
Larger models are more accurate but slower to load and transcribe. All models run on CPU with int8 quantization.
| Model | Parameters | Speed |
|---|---|---|
tiny |
39M | Fastest |
base |
74M | Fast |
small |
244M | Moderate |
medium |
769M | Slow |
large |
1550M | Slowest |
In TUI mode you can switch models from the dropdown at any time.
Platform Notes
| Platform | Notes |
|---|---|
| Windows | Works out of the box via Git Bash or MSYS2. |
| macOS | Clipboard works via pbcopy. You may need to grant terminal accessibility permissions for global hotkeys. |
| Linux | Install xclip or xsel for clipboard support (sudo apt install xclip). |
Transcription Log
All transcriptions are automatically saved to transcription_log.txt with timestamps for reference.
License
MIT
Author
Anthony Holten @aholten on GitHub
Metadata
Release files for stttui 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| stttui-0.3.0.tar.gz | 13.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| stttui-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 25.2 kB
Release files / stttui-0.3.0.tar.gz
| Download URL | stttui-0.3.0.tar.gz |
|---|---|
| Size | 13.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6f25baa552f8755a5479c4d62ca43f35f5a8c70e9229c45a90be7d631ee42eb1
|
|
BLAKE2b-256 checksum How to use checksums |
6df01a5ac602fd17bb7e9c646c8d594fc5332363f49be8bf4610e7891a39810a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 16, 2026.
Transparency logRelease files / stttui-0.3.0-py3-none-any.whl
| Download URL | stttui-0.3.0-py3-none-any.whl |
|---|---|
| Size | 12.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
45c166982d74fa6e14d4cd7e1acb817f6ec03d2f9c2af5548f6b031ec2dc2032
|
|
BLAKE2b-256 checksum How to use checksums |
b78cffd05fae085f704e3b7f3bc54e6772362b67ea99d88453d7916bc9ce3d24
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 16, 2026.
Transparency log