Python SDK for Omi wearable device
Project description
🎧 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.
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
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
File details
Details for the file omi_sdk-0.2.1.tar.gz.
File metadata
- Download URL: omi_sdk-0.2.1.tar.gz
- Upload date:
- Size: 7.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ab5421a562e16e14509a40a2c7b645db86db2252aba748fa34580838523b13fb
|
|
| MD5 |
ea65cb3179001d02f7329aa521026f03
|
|
| BLAKE2b-256 |
d12fa8d5d8fec6d31124fad07df5214c60a6cdff920e3888299163f15bc46288
|
File details
Details for the file omi_sdk-0.2.1-py3-none-any.whl.
File metadata
- Download URL: omi_sdk-0.2.1-py3-none-any.whl
- Upload date:
- Size: 7.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3c7b6c25038f98c2aa6abee53b279bd615f9636a843c8e0459933804a0b6193f
|
|
| MD5 |
88621922903db546a22603ccc9307551
|
|
| BLAKE2b-256 |
6d3662a7b1f179ed0a9f2ca871d9591ea9cc8fd9f45e8bc8df82cc60671f1e1e
|