Skip to main content

Speech-to-text CLI and system-tray app for dictating into any focused window. Local (vosk, faster-whisper) or cloud (groq, openai) backends, batch or streaming.

Project description

pypi docs

Scribe

Scribe is a speech-to-text CLI and tray app that pipes transcribed text into the focused window. It supports local and cloud-based APIs, batch and streaming workflows.

  • Five backends, one interface. Records from your mic and transcribes via Vosk (local, streaming), Whisper (local, batch), Whisper FUTO (local, batch — ACFT-tuned for short dictations), OpenAI (cloud, batch or streaming), or Groq (cloud, batch).
  • Four ways to deliver the transcript. Paste into the focused window (default), copy to the clipboard, print to the terminal, or append to a file.
  • Tray or terminal. Runs as a system tray icon with a single Record button, or as an interactive terminal TUI — same menu in both.
  • Hotkey-friendly. Hooks into your desktop's keyboard shortcuts via SIGUSR1 (toggle recording) and SIGUSR2 (cancel), plus built-in global hotkeys on X11 / Windows.
  • Cross-platform. Tested on Ubuntu (X11 and Wayland), macOS, and Windows; works under Termux for clipboard / terminal output.

Installation

Linux / macOS:

sudo apt-get install portaudio19-dev xclip   # Ubuntu; macOS: brew install portaudio
pip install scribe-cli[all]
export GROQ_API_KEY=YOURAPIKEY                # or OPENAI_API_KEY, or skip and run local

Windows (PowerShell) — no system packages needed; sounddevice bundles PortAudio and the clipboard is native, so skip the apt/brew step:

py -m venv .venv
.\.venv\Scripts\Activate.ps1          # if blocked: Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
pip install scribe-cli[whisper]        # local Whisper; or [all], or a cloud backend
$env:GROQ_API_KEY = "YOURAPIKEY"        # or OPENAI_API_KEY, or skip and run local

See the installation page for the full per-platform walkthrough (extras, Ubuntu / GNOME tray libs, the Windows quickstart).

Quickstart

scribe

This launches the system tray icon. Press Record, speak, press Stop — the transcription lands in the focused window. Scribe picks the first backend whose key / dependency is present, in order groqopenaiwhisper-futowhispervosk. Override the defaults or drop the tray entirely:

scribe --backend whisper --model small   # local, no API key
scribe --frontend terminal               # interactive TUI menu
scribe --mode clipboard                  # copy to clipboard, no keystroke

See the quickstart for more.

Documentation

Full documentation lives at https://perrette.github.io/scribe/:

From the same author

A few other open-source tools I maintain.

Scientific writing & data

  • texmark — write scientific articles in Markdown and convert them to journal-ready LaTeX/PDF.
  • papers — command-line BibTeX bibliography and PDF library manager.
  • datamanifest — declarative, reproducible dataset management. (See also the datamanifest.toml format spec and the DataManifest.jl Julia port.)

Speech to Text (dictate) and Text to Speech (read-aloud) tools

  • bard — text-to-speech reader.

Compatibility

OS Status
Ubuntu 24.04 Primary dev platform (GNOME, X11 and Wayland).
macOS Works.
Windows 11 Tested and working on Python 3.14 (64-bit / win_amd64). Dependencies resolve pre-built wheels; no C toolchain or Python downgrade needed.

Wayland keystroke injection is convoluted but solved.

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

scribe_cli-1.2.0.tar.gz (2.2 MB view details)

Uploaded Source

Built Distribution

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

scribe_cli-1.2.0-py3-none-any.whl (2.1 MB view details)

Uploaded Python 3

File details

Details for the file scribe_cli-1.2.0.tar.gz.

File metadata

  • Download URL: scribe_cli-1.2.0.tar.gz
  • Upload date:
  • Size: 2.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for scribe_cli-1.2.0.tar.gz
Algorithm Hash digest
SHA256 9a20469d7b1e1e4b7b7af55d3816a0ba6f993506d038f9d3eb7286fcc736f367
MD5 6354efcc6430f528a5e14f9f280dcf63
BLAKE2b-256 221a9de81b51915e211f2f0b2df7253cdbc0b6b3373a682a33737378537a4c3c

See more details on using hashes here.

Provenance

The following attestation bundles were made for scribe_cli-1.2.0.tar.gz:

Publisher: pypi.yml on perrette/scribe

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file scribe_cli-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: scribe_cli-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for scribe_cli-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 afde31fed293e9b9382a6b979f1f8c9220ab78333d77da2308e4d271ffb1e5ed
MD5 a731ede79ef7a52598610a0d45ff99a8
BLAKE2b-256 64ae360f02bc5331280b691b7d69f2d5509b87b6894570c4c2afcfbd12c4eb33

See more details on using hashes here.

Provenance

The following attestation bundles were made for scribe_cli-1.2.0-py3-none-any.whl:

Publisher: pypi.yml on perrette/scribe

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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