Skip to main content

🎧 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 devices
  • omi.listen_to_omi(mac, uuid, handler) - Connect to Omi device
  • omi.OmiOpusDecoder() - Decode Opus audio to PCM
  • omi.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)

Source distribution for omi-sdk 0.2.1
File Size Uploaded
omi_sdk-0.2.1.tar.gz 7.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for omi-sdk 0.2.1
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page