Skip to main content

Linux-first speech-to-text terminal UI

Project description

sttui

No browser. No Web UI. Just fast speech-to-text in your terminal.

Features

  • Records audio directly from your microphone via sounddevice.
  • Shows an interactive Textual TUI with record/transcribe states.
  • Sends WAV audio to OpenRouter as input_audio.
  • Saves .wav and .txt outputs in a timestamped naming scheme.
  • Supports --stdout mode for script-friendly output.

Requirements

  • Linux audio input device and PortAudio runtime (for sounddevice)
  • Python 3.11+
  • OpenRouter API key

Install

# Recommended: isolated install for CLI tools
pipx install sttui

# Verify install
sttui --help

Alternative with pip:

python -m pip install --user sttui
sttui --help

Config

Create ~/.config/sttui/config.toml:

[openrouter]
api_key = "or-..."

[transcription]
model = "google/gemini-2.5-flash"
prompt = "Please transcribe this audio file."
max_seconds = 600

Commands

# Show CLI help
uv run sttui --help

# Start interactive dictation TUI
uv run sttui

# TUI + write transcript to stdout on Enter
uv run sttui --stdout

# Override model and recording cap for this run
uv run sttui --model google/gemini-2.5-flash --max-seconds 120

# Use a custom config file
uv run sttui --config ~/.config/sttui/config.toml

Keybindings:

  • space / r: toggle record/stop
  • s: stop recording
  • c: copy transcript
  • Enter: new cycle (or stdout confirm in --stdout mode)
  • q: quit

CLI flags:

  • --stdout
  • --model <name>
  • --max-seconds <int>
  • --debug
  • --config <path>

By default, recordings are stored in ~/.local/share/sttui/recordings/.

Development

uv sync
uv run sttui --help
uv run pytest

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

sttui-0.1.1.tar.gz (12.0 kB view details)

Uploaded Source

Built Distribution

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

sttui-0.1.1-py3-none-any.whl (12.3 kB view details)

Uploaded Python 3

File details

Details for the file sttui-0.1.1.tar.gz.

File metadata

  • Download URL: sttui-0.1.1.tar.gz
  • Upload date:
  • Size: 12.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for sttui-0.1.1.tar.gz
Algorithm Hash digest
SHA256 dd33d53c1741047a8e91fc8e4acf2740094bf98a6f2a9fc1e7a0a1251b86fb4a
MD5 893dce951a0f8475c27507e7feb22981
BLAKE2b-256 4324c52ddbb1ed183b9c6838db38a67e8f75384350ec428f35967a455e274866

See more details on using hashes here.

Provenance

The following attestation bundles were made for sttui-0.1.1.tar.gz:

Publisher: publish.yaml on rambip/sttui

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

File details

Details for the file sttui-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: sttui-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 12.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for sttui-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9a5da350b166fe24d869492fd89af9f5b5e825991876f86e112d9893ee89c005
MD5 a9b9bbd46367dc1d96f1dfb983a78990
BLAKE2b-256 ca6dc1ac7fef0b42d923e920bfc70a6edc195b251def10e1768cc6414d0e9adf

See more details on using hashes here.

Provenance

The following attestation bundles were made for sttui-0.1.1-py3-none-any.whl:

Publisher: publish.yaml on rambip/sttui

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