Skip to main content

Push-to-talk voice dictation for Linux using Whisper AI

Project description

Praating-AI

Push-to-talk voice dictation for Linux. Hold a button, speak, release — text appears at your cursor.

Built for use with Claude Code, terminals, text editors, and any application.

Installation

1. Install system dependencies

sudo apt install xdotool portaudio19-dev libasound2-dev

2. Install praating-ai

With GPU support (recommended):

pip install praating-ai[cuda]

CPU only:

pip install praating-ai

Or install from GitHub:

pip install git+https://github.com/silentFred/praating-ai.git

3. Setup your push-to-talk button

praating --setup

This detects your mouse button and saves the config.

4. Run

praating

First run downloads the Whisper model (~3GB for large-v3). Subsequent starts are fast.

Usage

Hold your configured mouse button while speaking, release to transcribe.

Text is typed wherever your cursor is focused.

Commands

praating              # Start dictation
praating --setup      # Interactive button setup
praating --config     # Show current settings
praating --set KEY=VALUE  # Change a setting (e.g., --set model_size=medium)

Configuration

Config is stored at ~/.config/praating-ai/config.yaml:

# Input settings
mode: push_to_talk          # push_to_talk or continuous
mouse_button: button9       # button8, button9, left, right, middle
model_size: large-v3        # tiny, base, small, medium, large-v3
device: cuda                # cuda (GPU) or cpu
compute_type: float32       # float32, float16, int8

# Continuous mode settings (always listening, auto-detects speech)
silence_threshold: 0.01     # Audio level below this is silence (0.0-1.0)
silence_duration: 1.5       # Seconds of silence before processing

# Output behavior
add_trailing_space: true    # Add a space after transcribed text
add_newline: false          # Add a newline after transcribed text
press_enter: false          # Press Enter after transcribing (useful for chat apps)
capitalize_first: true      # Capitalize first letter of transcription

Modes

  • push_to_talk: Hold mouse button while speaking, release to transcribe
  • continuous: Always listening, automatically detects speech and transcribes when you pause

Finding your mouse button

praating --setup

Requirements

  • Linux with X11 (uses xdotool for typing)
  • Python 3.8+
  • Microphone
  • NVIDIA GPU recommended (falls back to CPU)

How It Works

  1. Loads Whisper speech recognition model on startup
  2. Listens for mouse button press → starts recording (beep)
  3. On button release → stops recording (beep)
  4. Transcribes audio using faster-whisper
  5. Types the text at cursor position using xdotool

Troubleshooting

No GPU acceleration

Make sure CUDA libraries are loaded. Use ./run.sh or set LD_LIBRARY_PATH to include the nvidia cudnn/cublas lib directories.

Text not appearing

  • Ensure xdotool is installed: sudo apt install xdotool
  • Check you're using X11: echo $XDG_SESSION_TYPE
  • For Wayland, you'd need to use ydotool or wtype instead

Wrong mouse button

Use the detection snippet above to find your button, then update mouse_button in your config.

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

praating_ai-0.2.0.tar.gz (20.2 kB view details)

Uploaded Source

Built Distribution

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

praating_ai-0.2.0-py3-none-any.whl (18.2 kB view details)

Uploaded Python 3

File details

Details for the file praating_ai-0.2.0.tar.gz.

File metadata

  • Download URL: praating_ai-0.2.0.tar.gz
  • Upload date:
  • Size: 20.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.11

File hashes

Hashes for praating_ai-0.2.0.tar.gz
Algorithm Hash digest
SHA256 05019a849bf71a17d9cce985316e0d601b1e8ae348dcbadeba14a5364d289d8c
MD5 46829a88937455a518dfe16263448530
BLAKE2b-256 6098fbffd37269bca352e0cc989e4241ed5d1699d9e04662f8f52a4a54f725f6

See more details on using hashes here.

File details

Details for the file praating_ai-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: praating_ai-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 18.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.11

File hashes

Hashes for praating_ai-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 88471a07e92b6f3fc324e4b75b9fcf38d56a235d6b7fb916490551f26aff2c28
MD5 d1f60d46edd9f294dc6e241523dadfdf
BLAKE2b-256 1dfbea323c40f2eb2cbb6b6fdb687b1743b1e64ae3dc934892a1f6f670ad3e48

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