Skip to main content

Overview

An easy-to-install Swift package for connecting to Omi devices. Get started in seconds with local Whisper-based transcription - no cloud API required.

Swift Package

Native iOS/macOS support

Local Transcription

Whisper runs on-device

Simple API

Connect in minutes

Installation

1

Create a New Project

Open Xcode → File → New Project → iOS → App
Make sure to select Storyboard as the Interface option.
Xcode New Project
2

Add the Swift Package

  1. Navigate to File → Swift Packages → Add Package Dependency…
  2. Select your project
  3. Paste the repository URL: https://github.com/BasedHardware/omi
  4. Click Next
If you aren’t prompted to add the package to your target, click “Add Package” again, then “Add to Target” and choose your project.
Add Package to Target
3

Add Bluetooth Permission

Go to Targets → Your Project → Info and add this permission:
<key>NSBluetoothAlwaysUsageDescription</key>
<string>This app needs Bluetooth access to connect to BLE devices.</string>

Quick Start

Get transcription working in 2 minutes:
1

Copy This Code

Replace your ViewController.swift with:
import UIKit
import omi_lib

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        self.lookForDevice()
    }

    func lookForDevice() {
        OmiManager.startScan { device, error in
            print("starting scan")
            if let device = device {
                print("got device ", device)
                self.connectToOmiDevice(device: device)
                OmiManager.endScan()
            }
        }
    }

    func connectToOmiDevice(device: Device) {
        OmiManager.connectToDevice(device: device)
        self.listenToLiveTranscript(device: device)
        self.reconnectIfDisconnects()
    }

    func reconnectIfDisconnects() {
        OmiManager.connectionUpdated { connected in
            if connected == false {
                self.lookForDevice()
            }
        }
    }

    func listenToLiveTranscript(device: Device) {
        OmiManager.getLiveTranscription(device: device) { transcription in
            print("transcription:", transcription ?? "no transcription")
        }
    }
}
2

Build and Run

  1. Select your development team
  2. Connect your iPhone via cable (simulators don’t support Bluetooth)
  3. Run the project
3

Test It

  1. Turn on your Omi device
  2. The app should connect automatically
  3. Speak - you’ll see transcription in the Xcode console
There’s no UI in this example - transcription appears in the Xcode logs.
Xcode Console Output

API Reference

The OmiManager class provides all device interaction methods:

Device Scanning

import omi_lib

// Scan for any Omi device
func lookForDevice() {
    OmiManager.startScan { device, error in
        if let device = device {
            print("got device ", device)
            self.connectToOmiDevice(device: device)
            OmiManager.endScan()
        }
    }
}

// Scan for a specific device
func lookForSpecificDevice(device_id: String) {
    OmiManager.startScan { device, error in
        if let device = device, device.id == "some_device_id" {
            print("got device ", device)
            self.connectToOmiDevice(device: device)
            OmiManager.endScan()
        }
    }
}

Connection Management

func connectToOmiDevice(device: Device) {
    OmiManager.connectToDevice(device: device)
    self.reconnectIfDisconnects()
}

func reconnectIfDisconnects() {
    OmiManager.connectionUpdated { connected in
        if connected == false {
            self.lookForDevice()
        }
    }
}

Live Data

func listenToLiveTranscript(device: Device) {
    OmiManager.getLiveTranscription(device: device) { transcription in
        print("transcription:", transcription ?? "no transcription")
    }
}

OmiManager Methods

MethodDescription
startScan(callback)Start scanning for Omi devices
endScan()Stop scanning
connectToDevice(device)Connect to a discovered device
connectionUpdated(callback)Monitor connection state changes
getLiveTranscription(device, callback)Receive real-time transcription
getLiveAudio(device, callback)Receive audio file URLs

License

MIT License - Omi’s Swift SDK is open source.