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.1.tar.gz
(17.8 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.1-py3-none-any.whl
(19.1 kB
view details)
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7bd8f2e753ad9de20edd84ceb3370e857bed273cae5f481e2c4d8529e97c83e2
|
|
| MD5 |
386a15dc784800e85d9fb6d761bf3d45
|
|
| BLAKE2b-256 |
898a1c51d3544c5413de4173498189ccc35ffbca22ee50712ef3d0fc090b0404
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
28944a873fae0c2fbc29b9e6c0b4aa503aa9b7bac7df24e1a0d48a2d1f52ca08
|
|
| MD5 |
f6e7ffe6fbd4b00e32f66d9d650dd1b9
|
|
| BLAKE2b-256 |
ef5d8628afe117c95da06511747520ab0df41a4170753500304f00a3470724d2
|