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 portaudioon 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
- Clone this repository
- Install dependencies with
uv sync - 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
- Double-tap the Option key to START recording
- Speak clearly into your microphone
- Single-tap Option to STOP recording
- 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
Release history Release notifications | RSS feed
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.0.tar.gz
(17.7 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
lumi_ai-0.1.0-py3-none-any.whl
(19.0 kB
view details)
File details
Details for the file lumi_ai-0.1.0.tar.gz.
File metadata
- Download URL: lumi_ai-0.1.0.tar.gz
- Upload date:
- Size: 17.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
270a86013582acb6da40e29a95e9e6a134eb4c50c20dc844f0440c9195f40b10
|
|
| MD5 |
0cd4111182e643b435ff5a60b9d7305d
|
|
| BLAKE2b-256 |
29253aa9523886ee98eb6845165141f44305b42f909425af60d64559068f8f91
|
File details
Details for the file lumi_ai-0.1.0-py3-none-any.whl.
File metadata
- Download URL: lumi_ai-0.1.0-py3-none-any.whl
- Upload date:
- Size: 19.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0fa84628d3f726f505991a2937c51aa3c7ade7a7a9d7e206c391d53883893ceb
|
|
| MD5 |
fb06bc68d463be917acfed4048006622
|
|
| BLAKE2b-256 |
a164c9f94e91826b8c5d8b38434251855e01f311e1ad0b39c957447f9c07c9e7
|