🎧 Omi Python SDK
A pip-installable Python SDK for connecting to Omi wearable devices over Bluetooth, decoding Opus-encoded audio, and transcribing it in real time using Deepgram.
📦 Installation
Prerequisites
The Omi SDK requires the Opus audio codec library to be installed on your system:
macOS:
brew install opus
Ubuntu/Debian:
sudo apt-get install libopus0 libopus-dev
CentOS/RHEL/Fedora:
sudo yum install opus opus-devel # CentOS/RHEL
sudo dnf install opus opus-devel # Fedora
Option 1: Install from PyPI (when published)
pip install omi-sdk
Option 2: Install from source
git clone https://github.com/BasedHardware/omi.git
cd omi/sdks/python
pip install -e .
🚀 Quick Start
1. Set up your environment
# Get a free API key from https://deepgram.com
export DEEPGRAM_API_KEY=your_actual_deepgram_key
2. Find your Omi device
# Scan for nearby Bluetooth devices
omi-scan
Look for a device named "Omi" and copy its MAC address:
0. Omi [7F52EC55-50C9-D1B9-E8D7-19B83217C97D]
3. Use in your Python code
import asyncio
import os
from omi import listen_to_omi, OmiOpusDecoder, transcribe
from asyncio import Queue
# Configuration
OMI_MAC = "YOUR_OMI_MAC_ADDRESS_HERE" # From omi-scan
OMI_CHAR_UUID = "19B10001-E8F2-537E-4F6C-D104768A1214" # Standard Omi audio UUID
DEEPGRAM_API_KEY = os.getenv("DEEPGRAM_API_KEY")
async def main():
audio_queue = Queue()
decoder = OmiOpusDecoder()
def handle_audio(sender, data):
pcm_data = decoder.decode_packet(data)
if pcm_data:
audio_queue.put_nowait(pcm_data)
def handle_transcript(transcript):
# Custom transcript handling
print(f"🎤 {transcript}")
# Save to file, send to API, etc.
# Start transcription and device connection
await asyncio.gather(
listen_to_omi(OMI_MAC, OMI_CHAR_UUID, handle_audio),
transcribe(audio_queue, DEEPGRAM_API_KEY, on_transcript=handle_transcript)
)
if __name__ == "__main__":
asyncio.run(main())
4. Run the example
The included example demonstrates connecting to an Omi device and real-time transcription:
# 1. Set your Deepgram API key
export DEEPGRAM_API_KEY=your_actual_deepgram_key
# 2. Find your Omi device MAC address
omi-scan
# 3. Update examples/main.py with your device's MAC address
# Edit line 10: OMI_MAC = "YOUR_DEVICE_MAC_HERE"
# 4. Run the example
python examples/main.py
The example will:
- Connect to your Omi device via Bluetooth
- Decode incoming Opus audio packets to PCM
- Transcribe audio in real-time using Deepgram
- Print transcriptions to the console
📚 API Reference
Core Functions
omi.print_devices()- Scan for Bluetooth devicesomi.listen_to_omi(mac, uuid, handler)- Connect to Omi deviceomi.OmiOpusDecoder()- Decode Opus audio to PCMomi.transcribe(queue, api_key)- Real-time transcription
Command Line Tools
omi-scan- Scan for nearby Bluetooth devices
🔧 Development
Local development setup
git clone https://github.com/BasedHardware/omi.git
cd omi/sdks/python
# Create virtual environment
python3 -m venv venv
source venv/bin/activate
# Install in editable mode
pip install -e .
# Install dev dependencies
pip install -e ".[dev]"
🧩 Troubleshooting
- Opus library error: Make sure Opus audio codec is installed (see Prerequisites section)
- Bluetooth permission errors on macOS: Go to System Preferences → Privacy & Security → Bluetooth and grant access to Terminal and Python
- Python version: Requires Python 3.10+
- Omi device: Make sure device is powered on and nearby
- WebSocket issues: SDK uses
websockets>=11.0
📄 License
MIT License — this is an unofficial SDK built by the community, not affiliated with Omi.
🙌 Credits
Built by the Omi community using Omi hardware and Deepgram's transcription engine.
Metadata
Release files for omi-sdk 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| omi_sdk-0.2.1.tar.gz | 7.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| omi_sdk-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 15.0 kB
Release files / omi_sdk-0.2.1.tar.gz
| Download URL | omi_sdk-0.2.1.tar.gz |
|---|---|
| Size | 7.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ab5421a562e16e14509a40a2c7b645db86db2252aba748fa34580838523b13fb
|
|
BLAKE2b-256 checksum How to use checksums |
d12fa8d5d8fec6d31124fad07df5214c60a6cdff920e3888299163f15bc46288
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.8
|
Release files / omi_sdk-0.2.1-py3-none-any.whl
| Download URL | omi_sdk-0.2.1-py3-none-any.whl |
|---|---|
| Size | 7.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3c7b6c25038f98c2aa6abee53b279bd615f9636a843c8e0459933804a0b6193f
|
|
BLAKE2b-256 checksum How to use checksums |
6d3662a7b1f179ed0a9f2ca871d9591ea9cc8fd9f45e8bc8df82cc60671f1e1e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.8
|