Skip to main content

Voice transcription CLI powered by OpenAI Whisper

Project description

shh

PyPI version Python versions CI License Documentation

Voice transcription CLI using OpenAI Whisper.


Features

  • Record from microphone (press Enter to stop)
  • Format with AI (casual, business, neutral)
  • Translate to any language
  • Auto-copy to clipboard
  • Async architecture
  • Live progress display

Quick Start

# Install with pipx (recommended)
pipx install shh-cli

# Setup API key
shh setup

# Start recording (press Enter to stop)
shh

Installation

Using pipx (recommended)

pipx install shh-cli

Using pip

pip install shh-cli

Development Setup

git clone https://github.com/mariuspruvot/shh.git
cd shh
uv venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate
uv pip install -e ".[dev]"

Usage

Basic Recording

# Quick record - press Enter to stop
shh

# Minimal output (just result + "Done")
shh --quiet
shh -q

Formatting Styles

# Casual style (removes filler words, conversational)
shh --style casual

# Business style (professional, formal)
shh --style business

# Neutral style (no formatting, Whisper output as-is)
shh --style neutral

Translation

# Transcribe and translate to English
shh --translate English

# Combine formatting and translation
shh --style business --translate French

# Set default translation language
shh config set default_translation_language English

# Now recordings auto-translate without --translate flag
shh

Output Modes

# Rich UI (default) - colors, panels, live progress
shh

# Quiet mode - minimal output for scripting
shh --quiet

# Set quiet mode as default
shh config set quiet_mode true

# Override quiet mode with verbose flag
shh --verbose

# Combine with other options
shh --quiet --style casual --translate English

Configuration

# Show current configuration
shh config show

# Set default style
shh config set default_style casual

# Set default translation language
shh config set default_translation_language English

# Get specific setting
shh config get default_style

# Reset to defaults (preserves API key)
shh config reset

# Edit config file directly in $EDITOR
shh config edit

Configuration File

Configuration is stored in a platform-specific location:

  • macOS: ~/Library/Application Support/shh/config.json
  • Linux: ~/.config/shh/config.json
  • Windows: %APPDATA%\shh\config.json

You can also use environment variables with the SHH_ prefix:

export SHH_OPENAI_API_KEY="sk-..."
export SHH_DEFAULT_STYLE="casual"
export SHH_DEFAULT_TRANSLATION_LANGUAGE="English"

Tech Stack

  • Python 3.11+ (async/await)
  • OpenAI Whisper (transcription)
  • PydanticAI (formatting)
  • Typer (CLI)
  • Rich (terminal UI)
  • sounddevice (audio recording)

Development

# Run tests
uv run poe test

# Type checking
uv run poe type

# Linting
uv run poe lint

# Formatting
uv run poe format

# All checks (type + lint + test)
uv run poe check

Architecture

Pragmatic layered architecture: CLI → Core → Adapters

CLI        → Commands, orchestration
Core       → Domain models (TranscriptionStyle)
Adapters   → APIs, audio, clipboard

See docs/architecture/overview.md for details.

License

MIT

Contributing

See CONTRIBUTING.md.

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

shh_cli-0.2.0.tar.gz (20.3 kB view details)

Uploaded Source

Built Distribution

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

shh_cli-0.2.0-py3-none-any.whl (30.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: shh_cli-0.2.0.tar.gz
  • Upload date:
  • Size: 20.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.16 {"installer":{"name":"uv","version":"0.9.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for shh_cli-0.2.0.tar.gz
Algorithm Hash digest
SHA256 90c4ef25f73e0d078ae9be62007dc3b609a441a73c61719dca6ad849482bd4a9
MD5 eb8b4bcc46f29eaaa115183375948a59
BLAKE2b-256 96794a7ccfa7034b0d63c6a069dea08fc75a915c62102bf436cc75689b259081

See more details on using hashes here.

File details

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

File metadata

  • Download URL: shh_cli-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 30.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.16 {"installer":{"name":"uv","version":"0.9.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for shh_cli-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 716b6c59b4f6de6c6da05c41030ac2170e31f5f14ad372a7d571be5515537f3c
MD5 ec7419dbfff9c3ba2288df6470427d7a
BLAKE2b-256 50fa9e50636dc5d34df16d53ff0bfa400e938c255af8eee16196511f948befb2

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