Skip to content

Migration guide

Migrating from Hume’s Expression Measurement API

Hume AI sunset its Expression Measurement API on June 14, 2026 — batch and streaming endpoints are permanently disabled, and the SDKs have removed the namespace. If you used it to measure emotion in recorded audio, this page maps that workflow onto the oruk Speech API: what transfers directly, what changes, and what oruk deliberately does not replace.

The short version

For audio emotion measurement, oruk returns 15 calibrated multilabel emotion scores and 16 speaking-style scores from one synchronous REST call — no job polling. On speech-emotion-bench (64 systems, one scoring pipeline), oruk Spectra measured 77.6% accuracy vs 49.6% for Hume’s prosody model before its sunset (the oruk entry is trained in-distribution; details on the methodology page). Pricing is $0.0060 per audio minute for emotion (pricing version 2026-07-11) against Hume EM’s published $0.0639 per minute.

Label mapping

Hume’s speech prosody model scored 48 emotion dimensions. oruk uses a smaller calibrated space: labels that cross their held-out-calibrated threshold are returned, so scores are decision-ready instead of raw dimensions. Near-synonym mappings:

Hume EM dimensionNearest oruk labelLabel type
Angerangryemotion
Anxietyworriedemotion
Excitementexcitedemotion
Joy / Amusementhappyemotion
Sadnesssademotion
Disappointmentdisappointedemotion
Fear / Distressscaredemotion
Disgustdisgustedemotion
Surprise (positive or negative)surprisedemotion
Pride / Triumphproudemotion
Reliefrelievedemotion
Embarrassment / Shameembarrassedemotion
Calmness / Contentmentneutralemotion
Determinationconfidentstyle
Doubtskeptical / hesitantstyle
Tiredness / Boredomtiredstyle
Interestenergetic / passionatestyle

Dimensions without a near-synonym (e.g. Nostalgia, Envy, Awe, Craving) have no direct oruk counterpart — treat them as out of scope rather than forcing a mapping. The full label inventory is on the capabilities page.

Code: before and after

The structural change is async-batch to synchronous: Hume EM submitted a job and polled for results; oruk returns the scored response to the same POST request.

# Hume Expression Measurement (batch, retired June 14, 2026)
from hume import HumeBatchClient
from hume.models.config import ProsodyConfig

client = HumeBatchClient("HUME_API_KEY")
job = client.submit_job([], [ProsodyConfig()], files=["call.wav"])
job.await_complete()          # poll until the async job finishes
predictions = job.get_predictions()
# oruk emotion API (synchronous, one request)
import os, requests

with open("call.wav", "rb") as audio:
    r = requests.post(
        "https://speech-api.oruk.ai/v1/audio/emotions",
        headers={"Authorization": f"Bearer {os.environ['ORUK_API_KEY']}"},
        files={"file": ("call.wav", audio, "audio/wav")},
        data={"model": "oruk-spectra-1"},
        timeout=120,
    )

r.raise_for_status()
for e in r.json()["emotions"]:
    print(e["label"], e["score"])

What changes in your pipeline

  • Job polling goes away. One POST per file; responses include time-local segments for long files.
  • Raw dimensions become calibrated labels. Instead of thresholding 48 floating scores yourself, oruk applies thresholds calibrated on held-out audio; a clip can carry several labels.
  • Transcripts are available in the same call. POST /v1/audio/analysis returns transcript, emotion, style, and tagged text together — Hume EM required a separate ASR step.
  • English only. oruk API v1 processes English audio. Hume EM was multilingual for some modalities.
  • Billing is per measured second. Every response reports its audio duration, applied rate, and estimated cost.

What oruk does not replace

Honesty over reach: oruk analyzes prerecorded audio only. If your Hume EM usage depended on facial expression measurement, vocal-burst taxonomies, text emotion, or websocket streaming, oruk is not the right replacement — evaluate multimodal vendors for those modalities. Hume itself continues to offer EVI (speech-to-speech voice agents) and Octave (TTS); it no longer sells batch expression measurement.

FAQ

When exactly did Hume Expression Measurement shut down?
Per the sunset notice in Hume’s documentation: May 14, 2026 was the last day to create jobs through the Playground, and June 14, 2026 was the last day to use the API and download job results. The Hume TypeScript SDK removed the expressionMeasurement namespace in release 0.16.0 on June 17, 2026.
Is oruk a drop-in replacement for Hume Expression Measurement?
No — the request model and label space differ. Hume EM ran asynchronous batch jobs over 48 emotion dimensions (plus vocal bursts, facial expressions, and text); oruk is a synchronous file-based API returning 15 calibrated multilabel emotion scores and 16 speaking-style scores for English audio. Most audio-emotion pipelines can migrate by remapping labels and replacing the job-polling loop with one POST.
What does oruk cost compared to Hume Expression Measurement?
Hume’s published audio-only Expression Measurement rate was $0.0639 per audio minute. oruk emotion requests on Spectra 1 cost $0.0060 per audio minute, and unified analysis (transcript + emotion + style) costs $0.0090. New oruk accounts include $5 in trial credit.
What did Hume Expression Measurement do that oruk does not?
Facial expression measurement (48 dimensions from video/images), vocal-burst classification, text emotion, and websocket streaming. oruk analyzes prerecorded audio files only. If you need facial or streaming expression measurement, oruk is not the right replacement.

Test the migration with $5 in trial credit

Run your existing evaluation audio through the oruk emotion API before committing. No card required.

oruk vs Hume AI All Hume AI alternatives Benchmark: 64 systems