Skip to main content

undertone

undertone

talk it. type it. ship it.

License Python Platform Groq

Voice typing for Linux that actually works.
Hold a key, speak, release -- your words appear wherever you're typing.


Demo

$ undertone

  ╭────────────────────────────────────────╮
  │  UNDERTONE                             │
  │  talk it. type it. ship it.            │
  ╰────────────────────────────────────────╯

  Status: vibing
  Hotkeys: Right Ctrl (hold) | F8 (toggle)

undertone> _

Quick Start

# Install
pipx install undertone

# Run (interactive setup on first launch)
undertone

# Upgrade to latest version
pipx upgrade undertone

That's it. 30 seconds to voice typing.


Features

Feature Description
Speed < 1 second latency Groq's Whisper API is blazing fast
Smart Grammar + filler fix LLM fixes grammar, punctuation, removes filler words
Free No credit card Groq's free tier is generous
Offline Local fallback Works without internet via faster-whisper
Private Privacy mode Keep voice 100% on your machine
Auto Runs on login Always ready when you are

How It Works

┌─────────────┐    ┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│  Hold Key   │ -> │   Speak     │ -> │  Release    │ -> │ Text Appears│
│  (Right Ctrl)    │  naturally  │    │   key       │    │  at cursor  │
└─────────────┘    └─────────────┘    └─────────────┘    └─────────────┘
                            |
                            v
                   ┌─────────────────┐
                   │  Groq Whisper   │
                   │ + LLM cleanup   │
                   └─────────────────┘
  1. Press hotkey (Right Ctrl = hold, F8 = toggle)
  2. Speak naturally
  3. Release -- text appears in < 1 second

Works everywhere: browser, terminal, IDE, Slack, Discord, anywhere you type.


Commands

Run undertone to open the interactive CLI:

Command Description
/setup Configure API key & hotkeys
/start Start voice typing
/stop Take a break
/status Check the vibe
/logs View receipts
/config Tweak settings
/help Get backup
/quit Peace out

Requirements

  • OS: Linux (X11, Wayland, or XWayland)
  • Python: 3.10+
  • API Key: Free from console.groq.com

System dependencies (auto-detected and installed during setup):

X11:

sudo apt install xclip xdotool

Wayland:

sudo apt install wl-clipboard wtype    # wlroots (Sway, Hyprland)
sudo apt install wl-clipboard ydotool  # GNOME, KDE, others

Undertone auto-detects your display server and uses the right tools.


Text Cleanup

Undertone uses a two-stage cleanup pipeline:

  1. Regex filler removal -- instantly strips "um", "uh", "like", "you know", etc.
  2. LLM grammar fix -- sends text to Groq's llama-3.1-8b-instant for grammar, punctuation, and capitalization fixes (~160ms extra latency)

Toggle LLM cleanup on/off:

undertone> /config
# Select "LLM grammar fix on/off"

When LLM is off or fails, regex cleanup runs as fallback.


Privacy Mode

By default, audio goes to Groq for fast transcription. Want to keep it local?

undertone> /config
# Select "Privacy mode" -> "local"

Local mode uses faster-whisper on your CPU. Slower (~3-5s) but your voice never leaves your machine.


Troubleshooting

No audio input detected
  • Check your mic is connected
  • Run arecord -l to list audio devices
Text not appearing
  • X11: sudo apt install xclip xdotool
  • Wayland (Sway/Hyprland): sudo apt install wl-clipboard wtype
  • Wayland (GNOME/KDE): sudo apt install wl-clipboard ydotool
  • Check logs with /logs to see which tools were detected
Service won't start
  • Check logs: run undertone then /logs
  • Verify API key at console.groq.com

Uninstall

# Stop service
undertone
# > /stop
# > /quit

# Remove package
pipx uninstall undertone

# Remove config (optional)
rm -rf ~/.config/undertone
rm ~/.config/systemd/user/undertone.service
systemctl --user daemon-reload

Tech Stack


Contributing

PRs and issues welcome!

Report Bug

Request Feature


License

MIT - do whatever you want with it.


Built with caffeine and voice commands

Metadata

Release files for undertone 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for undertone 0.3.0
File Size Uploaded Provenance Actions
undertone-0.3.0.tar.gz 34.5 kB Without provenance Details for undertone-0.3.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for undertone 0.3.0
File Interpreter ABI Platform Actions
undertone-0.3.0-py3-none-any.whl Python 3 none any Details for undertone-0.3.0-py3-none-any.whl

Total release size: 62.7 kB

Release files / undertone-0.3.0.tar.gz

Download URL undertone-0.3.0.tar.gz
Size 34.5 kB
Tags Source
SHA-256 checksum
How to use checksums
9dba8ae3e23f685a8ab23b19b965ad9816c5ca985c0869a41d0b312104e183a6
BLAKE2b-256 checksum
How to use checksums
7d71b7fae27636de95080fd74f9491426b01286ec6ded551124813548f8fec81
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / undertone-0.3.0-py3-none-any.whl

Download URL undertone-0.3.0-py3-none-any.whl
Size 28.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9b7e2c23aacfca0bd59c51dc93abd6239e25478c9e2dc6e63c27b233f80e841d
BLAKE2b-256 checksum
How to use checksums
705cc5ac1d8615064016688bf7a1e09d918863041f73df03f14b749c97afa912
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Security for undertone 0.3.0

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page