Skip to main content

Speech-to-text utility with hotkey activation

Project description

Lumi

Lumi is a speech-to-text utility that allows quick voice input activated by double-tapping the Option key.

Features

  • Easy activation with double-tap Option key hotkey
  • Single-tap to stop recording (more intuitive)
  • Automatically transcribes speech when recording stops using Groq, ElevenLabs APIs, or local MLX Whisper
  • Copies transcription to clipboard and automatically pastes it
  • Plays lightweight notification sounds when recording starts/stops
  • Command-line interface with configuration options
  • Primarily tested on macOS (may work on other platforms but not fully tested)

Requirements

  • Python 3.12+
  • PortAudio library (brew install portaudio on macOS)
  • For local transcription (default):
    • MLX (Apple Silicon Macs only) - no API key needed
  • For cloud transcription (optional):
    • Groq API key or
    • ElevenLabs API key

Installation

From PyPI

pip install lumi-ai

Or with uv:

uv pip install lumi-ai

After installation, you can use the lumi command directly.

From Source

  1. Clone this repository
  2. Install dependencies with uv sync
  3. Run with uv run -m src.lumi.s2t

Development Installation

For development:

uv pip install -e .

Usage

Command-line Options

# Choose transcription service
lumi --service mlx            # Use local MLX Whisper (default, no API key needed)
lumi --service groq           # Use Groq API
lumi --service elevenlabs     # Use ElevenLabs API

# API keys
lumi --api-key YOUR_GROQ_API_KEY
lumi --service elevenlabs --elevenlabs-api-key YOUR_ELEVENLABS_API_KEY

# Specify models
lumi --service groq --model whisper-tiny
lumi --service elevenlabs --model custom_model
lumi --service mlx --model mlx-community/whisper-large-mlx-q4

# Other options
lumi --no-auto-paste          # Disable auto-pasting
lumi --debug                  # Enable debug logging

Basic Usage

  1. Double-tap the Option key to START recording
  2. Speak clearly into your microphone
  3. Single-tap Option to STOP recording
  4. The transcription will be copied to your clipboard and automatically pasted at your cursor position

Keyboard Controls

  • Double-tap Option: Start recording
  • Single-tap Option: Stop recording
  • Ctrl+C: Exit application

Advanced Features

  • Automatic fallback to alternative audio input devices
  • Temporary recordings stored in system temp directory
  • Sound notifications for recording start/stop
  • Auto-paste functionality (can be disabled with --no-auto-paste)
  • Platform-aware keyboard shortcuts (Cmd+V on macOS, Ctrl+V elsewhere)
  • Debug mode for troubleshooting with detailed logging

Platform Support

  • macOS: Fully supported and tested
  • Linux/Windows: Basic functionality may work but not extensively tested
  • MLX Whisper: Only works on Apple Silicon Macs

Development

  • Install dependencies: uv sync
  • Add dependency: uv add package_name
  • Lint: ruff check .
  • Format: ruff format .
  • Test: pytest
  • Test specific file: pytest path/to/test_file.py

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

lumi_ai-0.1.1.tar.gz (17.8 kB view details)

Uploaded Source

Built Distribution

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

lumi_ai-0.1.1-py3-none-any.whl (19.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: lumi_ai-0.1.1.tar.gz
  • Upload date:
  • Size: 17.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.7

File hashes

Hashes for lumi_ai-0.1.1.tar.gz
Algorithm Hash digest
SHA256 7bd8f2e753ad9de20edd84ceb3370e857bed273cae5f481e2c4d8529e97c83e2
MD5 386a15dc784800e85d9fb6d761bf3d45
BLAKE2b-256 898a1c51d3544c5413de4173498189ccc35ffbca22ee50712ef3d0fc090b0404

See more details on using hashes here.

File details

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

File metadata

  • Download URL: lumi_ai-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 19.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.7

File hashes

Hashes for lumi_ai-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 28944a873fae0c2fbc29b9e6c0b4aa503aa9b7bac7df24e1a0d48a2d1f52ca08
MD5 f6e7ffe6fbd4b00e32f66d9d650dd1b9
BLAKE2b-256 ef5d8628afe117c95da06511747520ab0df41a4170753500304f00a3470724d2

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