Skip to main content

Overview

Omi allows you to stream audio bytes from your DevKit directly to your backend or any external service. This enables custom audio processing like:

Custom Speech Recognition

Use your own ASR models instead of Omi’s default transcription

Voice Activity Detection

Implement custom VAD logic for specialized use cases

Audio Analysis

Extract features, spectrograms, or embeddings in real-time

Cloud Storage

Store raw audio for later processing or compliance

Technical Specifications

The sample rate is passed as a query parameter so your endpoint can handle different device versions.

Setup Guide

Create Your Endpoint

Create a webhook that accepts POST requests with binary audio data.Request format:
Your endpoint should:
  • Accept application/octet-stream content type
  • Read sample_rate and uid from query parameters
  • Process the raw bytes (buffer, save, or analyze)
  • Return 200 OK quickly to avoid timeouts

Configure in Omi App

  1. Open the Omi App
  2. Go to SettingsDeveloper Mode
  3. Scroll to Realtime audio bytes
  4. Enter your webhook URL
  5. Set the Every x seconds field (e.g., 10 for 10-second chunks)

Test Your Integration

Start speaking while wearing your Omi device. Audio bytes should arrive at your webhook at the configured interval.
Use webhook.site to verify data is arriving before implementing your processing logic.

Working with Audio Bytes

Converting to WAV

The received bytes are raw PCM16 audio. To create a playable WAV file, prepend a WAV header:

Accumulating Chunks

If you need continuous audio (not chunked), accumulate bytes across requests:

Example: Save to Google Cloud Storage

A complete example that saves audio files to Google Cloud Storage.

Create GCS Bucket

Follow the Saving Audio Guide steps 1-5 to create a bucket with proper permissions.

Fork the Example Repository

Clone and Deploy

Clone the repository and deploy to your preferred cloud provider (GCP, AWS, DigitalOcean) or run locally with ngrok.The repository includes a Dockerfile for easy deployment.

Set Environment Variables

Configure these environment variables during deployment:

Configure Omi App

Set the endpoint in Developer Settings → Realtime audio bytes:

Verify

Audio files should now appear in your GCS bucket every X seconds (based on your configured interval).

Processing Ideas

Feed audio to your own ASR models for specialized vocabulary or languages:
Detect speech vs. silence for custom endpointing:
Extract embeddings for speaker identification or audio similarity:
Analyze emotional tone from audio features:

Best Practices

Respond Quickly

Return 200 OK immediately, process async. Slow responses may cause timeouts.

Handle Missing Data

Network issues may cause gaps. Design your processing to handle incomplete audio.

Buffer Appropriately

Choose chunk interval based on your use case. Larger chunks = fewer requests but higher latency.

Monitor Usage

Audio streaming generates significant data. Monitor storage and bandwidth costs.
Audio data is sensitive. Ensure your endpoint is secured with HTTPS and implement appropriate access controls.

Integration Apps

Overview of webhook-based integrations

Saving Audio

Guide to storing audio in cloud storage

Real-time Transcription

How Omi’s built-in transcription works

Apps Introduction

Overview of all Omi app types