Skip to main content

whspr

A minimalist dictation tool for local speech recognition using OpenAI's Whisper models. Its interface is fully keyboard-driven and sound-based so as not to interfere with windowing or application focus.

Processing is done locally using faster-whisper. If whspr[gpu] optional dependencies are installed and an Nvidia GPU is available, the model whisper-large-v3-turbo will be used; otherwise, whisper-small will be used. whspr is currently only available on Linux and can be installed from PyPI.

Transcription happens in a background server process that keeps the model warm between dictations and shuts itself down automatically after five minutes of inactivity; it is started (and restarted) on demand, so this is invisible in use.

Usage

Bind the following commands to your preferred keyboard shortcuts (examples given here).

whspr            # Super+C
whspr --paste    # Super+V
whspr --cancel   # Super+X

In the example given, Super+C and Super+V will both start or stop dictation and copy the result to the clipboard. The difference is that Super+V will additionally paste the result into the currently focussed application. Super+X will cancel any dictation currently in progress. Sounds will indicate when whspr is listening and when it has finished processing.

whspr can also be accessed from within Python:

from whspr import transcribe
result = transcribe("path/to/audio.mp3")

Installation

whspr depends on:

  • the aplay, arecord, ydotool commands. The former two are part of the alsa-utils package and installed on most distros by default. ydotool is optional and only required for the --paste flag (see Usage).
  • a clipboard backend compatible with pyperclip, e.g. wl-clipboard on Wayland or xclip on X11.
  • for optional GPU-accelerated speech recognition, an Nvidia GPU and drivers are required.

On Ubuntu, simply run:

sudo apt update && sudo apt install -y alsa-utils wl-clipboard xclip ydotool pipx
pipx install 'whspr[gpu]'  # gpu support is optional; omit [gpu] if it's not desired
whspr --finish-setup     # optional to pre-load the model from the internet before its first use

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

whspr-1.1.2.tar.gz (108.2 kB view details)

Uploaded Source

Built Distribution

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

whspr-1.1.2-py3-none-any.whl (119.9 kB view details)

Uploaded Python 3

File details

Details for the file whspr-1.1.2.tar.gz.

File metadata

  • Download URL: whspr-1.1.2.tar.gz
  • Upload date:
  • Size: 108.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.4

File hashes

Hashes for whspr-1.1.2.tar.gz
Algorithm Hash digest
SHA256 596bd02525e95db7717182f1040776e365819ddd705d9462d5eaa299dadc0c4f
MD5 d77d413aadd0f5211c171bfb9e6712cc
BLAKE2b-256 1e3a3838fde3728e5a3e5441b0351257d953be3c52bced959abcb8cf9e034980

See more details on using hashes here.

File details

Details for the file whspr-1.1.2-py3-none-any.whl.

File metadata

  • Download URL: whspr-1.1.2-py3-none-any.whl
  • Upload date:
  • Size: 119.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.4

File hashes

Hashes for whspr-1.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 4acac89e20ffe62b1190cf581b12df9dfbba3d68fd0209c9f2c80ac200d1cf5f
MD5 f26af70c3212594fe1992b955f19059f
BLAKE2b-256 c82c89502c13e95b648e5151df101afb265457017d412336e29a0e1a0f0bd752

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.1.2 This release

2 files

1.1.0

2 files

1.0.0

2 files

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