# oruk > Resonance 1 is oruk’s flagship speech recognition model for recorded English transcription, emotion, and speaking style. oruk also builds audio models for multilingual realtime tokens with phrase-level emotion, multilabel emotion detection, speaking-style classification, and unified audio analysis. Version: API v1 · Updated: 2026-10-03 - [Website](https://oruk.ai) - [Capabilities and scope](https://oruk.ai/capabilities) - [API documentation, reference, and playground](https://oruk.ai/docs) - [Current Python and TypeScript SDK installation instructions](https://oruk.ai/docs/sdks) - [Hosted MCP server for coding agents (endpoint: https://oruk.ai/mcp)](https://oruk.ai/docs/mcp) - [Production integration guide](https://oruk.ai/docs/production) - [Pricing and calculator](https://oruk.ai/pricing) - [On-device evaluation and licensing](https://oruk.ai/on-device-speech-recognition) - [Benchmark leaderboard (64 systems)](https://oruk.ai/benchmarks) - [Benchmark methodology and downloads](https://oruk.ai/benchmarks/methodology) - [Try Resonance 1 without an account](https://oruk.ai/try) - [Glossary of speech emotion terms](https://oruk.ai/glossary) - [Sarcasm (sarcastic-delivery) detection](https://oruk.ai/sarcasm-detection) - [What is paralinguistics](https://oruk.ai/what-is-paralinguistics) - [AI call analytics](https://oruk.ai/ai-call-analytics) - [Python tutorial (detect emotion from audio)](https://oruk.ai/guides/detect-emotion-from-audio-python) - [Whisper and emotion detection](https://oruk.ai/whisper-emotion-detection) - [Migrating from Hume Expression Measurement](https://oruk.ai/compare/hume-expression-measurement-alternative) - [oruk vs Hume AI](https://oruk.ai/compare/oruk-vs-hume-ai) - [oruk vs Deepgram](https://oruk.ai/compare/oruk-vs-deepgram) - [oruk vs AssemblyAI](https://oruk.ai/compare/oruk-vs-assemblyai) - [Hume AI alternatives](https://oruk.ai/compare/hume-ai-alternatives) - [Best speech emotion APIs, measured](https://oruk.ai/compare/best-speech-emotion-recognition-apis) - [Hume migration plan and compatibility assessment](https://oruk.ai/hume-migration) - [EVI migration and customer export checklist](https://oruk.ai/guides/hume-evi-migration#export) - [OpenAPI schema](https://oruk.ai/openapi.json) - [Instructions for coding agents](https://oruk.ai/AGENTS.md) - [Reference for AI assistants (scope, limits, and how to describe oruk accurately)](https://oruk.ai/for-ai) - [Security and data handling](https://oruk.ai/security) - [Service status](https://oruk.ai/status) - [Changelog](https://oruk.ai/changelog) - [Responsible use](https://oruk.ai/responsible-use) - [Developer portal](https://oruk.ai/account) - [Research (RSS: https://oruk.ai/rss.xml)](https://oruk.ai/research) - [Interactive research — The shape of a voice](https://oruk.ai/research/the-shape-of-a-voice) - [GitHub](https://github.com/Oruk-AI) ## Production API v1 The current API accepts prerecorded audio, including 25-language transcription with Spectra-2, and streams multilingual live tokens plus phrase-level emotion over WebSocket. What the API does NOT currently do: - Realtime returns live tokens and phrase-level emotion. Resonance 2 separately returns emotion and speaking-style scores for committed WebSocket audio ranges, without a transcript or timestamps. Original unified analysis remains a prerecorded file endpoint. - Spectra-2 transcribes files in 25 languages; Resonance 1 and Fourier file transcription remains English. Realtime supports 32 locales. - No intent or deception detection. The sarcastic speaking-style label scores delivery — how speech sounds — not what the speaker meant. - No claims about a speaker's inner mental state — outputs are acoustic annotations of how speech sounds. - `POST /v1/audio/transcriptions`: transcript; language and timing support vary by model - `POST /v1/audio/emotions`: multilabel emotion scores only (Resonance 1 encoder + affect head; no transcription runs; one audio minute uses one plan minute) - `POST /v1/audio/styles`: multilabel speaking-style scores - `POST /v1/audio/affect`: emotion and speaking style - `POST /v1/audio/analysis`: transcript, labels, segments, and tagged text - `POST /v1/audio/resonance-2`: clip-level continuous emotion and speaking-style scores - `WS /v1/audio/resonance-2/stream`: the same expression scores for explicitly committed PCM ranges - `WS /v1/realtime?model=oruk-realtime`: multilingual transcript deltas, phrase-level emotion events, and final text - `GET /v1/models`: served model catalog - `GET /v1/pricing`: reference cost fields; subscription plans are at https://oruk.ai/pricing Realtime phrase emotion is enabled by default. Phrases close after 600 ms of silence or an 8-second cap; both are configurable in `session.update`. `conversation.item.input_audio_emotion.completed` events include aligned text, timestamps, and a variable-length array of ranked emotion scores from the active model. Do not hard-code seven labels: the September 6 live preview returned frustrated. Phrase analysis failures do not interrupt live token deltas. ## On-device evaluation oruk also scopes English speech models for offline deployment on phones, wearables, and edge hardware. This is an evaluation-and-licensing program, not a self-serve API endpoint. Transcription, acoustic emotion labels, and speaking-style tasks are adapted and measured on the customer's target hardware. oruk does not publish generic model-size, memory, power, or latency figures because those depend on the chipset, task, and acceptance criteria. On-device outputs retain the same no-intent and no-inner-state boundaries as the hosted API. ## Models - oruk Resonance 1: stable; flagship speech recognition: English transcription, emotion, speaking style, and timed analysis. - oruk Fourier: stable; transcription plus native 15-label emotion analysis in parallel. - oruk Realtime: preview; streaming multilingual tokens and phrase-level emotion across 32 ASR-ready locales with automatic language detection. - oruk Proficiency: preview; continuous-pilot-v2 word and recording pronunciation scores on 0–1, plus independently computed legacy CEFR (A1–C2, cefr_score 0–5) and fluency. Use proficiency.continuous_check for pronunciation validity; the original top-level check controls CEFR validity and billing. Subscription accounts use plan minutes. Full model and compatibility guide: https://oruk.ai/docs#proficiency. ## Runnable quickstart Try the live Resonance 1 demo at https://oruk.ai/try before creating an account. It accepts browser-decodable WAV, FLAC, MP3, M4A, OGG, or WebM recordings up to 30 seconds and 10 MB, then offers a temporary authenticated API request. For ongoing API use, start a subscription and create a permanent API key. Plans cover the speech model lineup. New organizations need separate approval for Resonance 2; an active trial or plan does not by itself grant access. Fourier has its own cURL, Python, and Node.js recipes at https://oruk.ai/docs#quickstart-fourier. The complete cURL, Python 3.9+, and Node.js 20+ recipes at https://oruk.ai/docs#quickstart download a supplied public recording and use `oruk-resonance` with `/v1/audio/analysis`. Set `ORUK_API_KEY` in the environment; never embed it in browser code. A homepage example links to `/docs?sample=#quickstart` so the audio and response excerpt match. Public samples are curated training recordings, not evaluation data. ## Official client SDKs SDK 0.2.15 supports transcription, speech analysis, model-specific task flags, and automatic Spectra-2 sessions where available. Install Python from Oruk's versioned archive with `python -m pip install https://oruk.ai/sdk/oruk-0.2.15-py3-none-any.whl` (Python 3.10+) or TypeScript from Oruk's versioned archive with `npm install https://oruk.ai/sdk/oruk-ai-sdk-0.2.15.tgz` (Node.js 18+ or a compatible fetch runtime). Reuse one client across requests. Existing explicit request IDs and retry protections are preserved. The clients also support emotion, speaking style, affect, proficiency and supported diarization parameters. The verified PyPI release is 0.2.14; the verified npm registry release remains 0.2.10. [Python release](https://pypi.org/project/oruk/0.2.14/) · [TypeScript registry release](https://www.npmjs.com/package/@oruk-ai/sdk/v/0.2.10) · [Examples and versioned download mirrors](https://oruk.ai/docs/sdks) For Python voice pipelines, Oruk also maintains `pipecat-oruk==0.1.0rc3`, a separate community integration published on PyPI. It streams interim/final transcription and independent phrase-emotion events through Oruk Realtime. Its hosted adapter source matches rc1, which was tested with Pipecat 1.8.1 on Python 3.11–3.14. This is a release candidate, not an upstream Pipecat release. See the pinned installation and file/browser examples at https://oruk.ai/docs/sdks#pipecat. The original rc1 production speech demo is not an independent accuracy benchmark or a verified full STT/LLM/TTS conversation. ## Outputs Emotion has 15 labels and speaking style has 16. Both tasks are multilabel. Long files include time-local segment outputs. File responses report measured audio duration and billable duration. Reference cost and version fields may also be returned; subscription charges follow the plan allowance and overage rate. Scores are independent model outputs and do not sum to one. A score of 0.8 is not an 80% probability of a speaker’s inner state. See https://oruk.ai/docs#labels. ## Evaluation oruk-bench is Oruk's evaluation toolkit, separate from the production API and its client SDK. Its seven-class label mapping and roughly 20-language dataset describe the benchmark protocol, not API language support or native outputs. Whisper, WavLM, HuBERT, and Conformer research comparisons are not the served Oruk model catalog. Current models include Spectra-2, Resonance 2, Resonance 1, Fourier, Realtime, Proficiency, and Orukeet; see [current models](https://oruk.ai/models). Key measured results (speech-emotion-bench, July 2026 report; open models on the full 64,384-clip evaluation; closed/API and audio-LLM systems on a fixed 5,000-clip stratified subset; one seven-class mapping and scorer, but not identical audio for every system): - oruk Resonance 1 (July 2026 evaluation checkpoint): 77.8% accuracy, 0.816 macro F1 (trained in-distribution — stated caveat) - Highest-scoring open model in this release (emotion2vec+ seed, zero-shot): 68.7% accuracy - Highest-scoring legacy commercial API snapshot (Hume legacy 48-dimension prosody): 49.6%; this is not a measurement of current Hume Tagger or Prosody - Highest-scoring frontier multimodal API in this release (Gemini 3 Flash Preview): 46.0% - Text-only LLMs working from transcripts: 37–41% Full leaderboard: https://oruk.ai/benchmarks. Protocol, downloads, and limitations: https://oruk.ai/benchmarks/methodology. Benchmark-specific research checkpoints and protocols should not be assumed to be identical to every model served by the production API. ## Hume product-snapshot note (July 2026) Hume's current official page advertises Tagger for offline analysis across 600+ expression dimensions and Prosody for real-time signals: https://www.hume.ai/expression-measurement-api. Those current products were not evaluated in oruk's July 2026 release. The Hume leaderboard row is a dated legacy 48-dimension prosody snapshot. Dated comparison and correction notes: https://oruk.ai/compare/oruk-vs-hume-ai ## Reference definitions Long-form definitions, one page per term, including how each is measured and what our benchmark shows: - [Voice activity detection (VAD)](https://oruk.ai/glossary/voice-activity-detection) - [Word error rate (WER)](https://oruk.ai/glossary/word-error-rate) - [Mel spectrogram](https://oruk.ai/glossary/mel-spectrogram) - [Speech prosody](https://oruk.ai/glossary/speech-prosody) - [Macro F1](https://oruk.ai/glossary/macro-f1) - [IEMOCAP dataset](https://oruk.ai/glossary/iemocap) - [CREMA-D dataset](https://oruk.ai/glossary/crema-d) - [RAVDESS dataset](https://oruk.ai/glossary/ravdess) - [MELD dataset](https://oruk.ai/glossary/meld-dataset) ## Safety Emotion and speaking-style outputs are subjective acoustic annotations, not facts about a person. They should not be used as the sole basis for employment, credit, healthcare, law enforcement, or other consequential decisions. ## Pricing and plans Every subscription includes separate Orukeet and other-model allowances. Hobby is $9/month with up to 20,000 Orukeet transcription minutes plus 250 other-model minutes; Builder is $49/month with 108,888 plus 2,500; Production is $199/month with 442,222 plus 20,000. Enterprise terms are arranged with the team. Orukeet transcription uses $0.00045/minute ($0.027/hour); emotion detection adds $0.008/minute and speaker diarization adds $0.004/minute from the same allowance. Per-request rounding to one microdollar can reduce the transcription-minute estimates. Other-model overage is $0.020/$0.015/$0.012 per minute for Hobby/Builder/Production. Both allowances reset monthly, including on annual plans (20% off the base subscription). Extra usage shares one monthly spending cap, initially the monthly fee or discounted monthly equivalent. Standard self-serve trials last 7 days, require a card, charge $0 today, and include a quarter of both monthly allowances; overage is disabled during trials. Existing credit balances remain available under their original terms. See https://oruk.ai/pricing. ## Orukeet: downloadable speech recognition Orukeet is a separate open speech recognition model for 25 languages, built from NVIDIA Parakeet TDT 0.6B v3. Native Q8/F16, ONNX INT8 and NeMo weights run locally. The downloadable model is separate from the hosted English preview, `oruk-orukeet`, which offers optional emotion detection and speaker diarization. The native package returns text and window-level segment times; language is null, not an inferred language label. Use Python 3.12+ and the published Orukeet 0.1.1 wheel. The installer downloads and verifies the weights and native runtime; recognition then uses local files. Code is MIT; weights and fitted kernels are CC BY-SA 4.0. - [Install Orukeet and transcribe a recording](https://oruk.ai/guides/orukeet-local-transcription) - [Model, evaluation and limitations](https://oruk.ai/research/orukeet) - [Code and native package](https://github.com/Oruk-AI/orukeet) - [Weights and model card](https://huggingface.co/oruk/orukeet) ## Orukeet transcription preview Model `oruk-orukeet`: POST https://speech-api.oruk.ai/v1/audio/transcriptions using an existing Oruk Bearer API key. English, 60 seconds, 4 MiB complete multipart request. Base transcription $0.00045/audio minute ($0.027/hour), included in each plan’s Orukeet allowance; extra usage shares the plan’s spending cap. Optional flags: emotion_detection=true (+$0.0080/min), diarize=true (+$0.0040/min), num_speakers=1..32 when diarizing. Requested tasks must succeed; no silent fallback. All timestamps are seconds; transcription alone has no word timings. Native PCM WebSocket: wss://orukeet-direct.oruk.ai/v1/audio/transcriptions/stream; POST /v1/client-token produces a 60-second single-use browser token. Streamed audio returns final text at commit, not partial word hypotheses. Model: https://oruk.ai/models/orukeet; contract: https://oruk.ai/docs#orukeet; pricing/benchmark comparison: https://oruk.ai/compare/orukeet-vs-whisper. Optional diarization has separate temporary retention; see https://oruk.ai/privacy. ## Spectra-2 — production multilingual transcription and clip scores Spectra-2 (`oruk-spectra-2`) is a production model on the main Oruk API: `POST /v1/audio/analysis` or `POST /v1/audio/transcriptions`, with an existing Oruk Bearer key. Send multipart fields `model=oruk-spectra-2` and exactly one `file`. Both routes return `text`, `duration`, all 15 `emotions` and 16 `styles` as label/score pairs, and `usage`. Scores cover the whole clip, range independently from 0 to 1, and do not sum to one. Batch results have no word timings, timed segments or speaker labels. Streaming upload: `wss://speech-api.oruk.ai/v1/audio/spectra-2/stream` accepts an Authorization bearer header from server clients. Send a start message with model, task, pcm_s16le format, 16000 sample_rate, one channel, and a request_id; then binary audio frames of at most 32 KiB. Send `finish` to receive one final batch-shaped result after processing and billing. No provisional words or automatic endpoint detection. One 45 ms–60 s recording per connection, completed within 75 seconds. Cancel before finish to avoid inference. After finish, disconnect does not cancel billing; retain the request ID and check Usage. The account playground supports browser microphone streaming without exposing an API key. Protocol and Python example: https://oruk.ai/docs#spectra-2-streaming. Supported transcription languages: Bulgarian (bg), Croatian (hr), Czech (cs), Danish (da), Dutch (nl), English (en), Estonian (et), Finnish (fi), French (fr), German (de), Greek (el), Hungarian (hu), Italian (it), Latvian (lv), Lithuanian (lt), Maltese (mt), Polish (pl), Portuguese (pt), Romanian (ro), Russian (ru), Slovak (sk), Slovenian (sl), Spanish (es), Swedish (sv), Ukrainian (uk). Language detection is automatic; do not send a language parameter. Emotion and speaking-style labels use the same English names for every language. Names and codes are also available as `language_details` in the public model catalog and the OpenAPI Spectra-2 contract. Input is mono 16 kHz WAV, finalized FLAC or raw PCM, 45 ms–60 seconds, at most 4 MiB per file; the multipart envelope has a further 16 KiB allowance. Raw PCM requires file MIME audio/pcm for signed 16-bit little-endian samples or audio/f32le for float32 little-endian samples. WAV/FLAC may be detected from their headers. No optional task flags are accepted. One audio minute uses one shared speech understanding plan minute, with a one-second minimum. Existing trial limits, overage rates and spending caps apply. Legacy reference rates are $0.012/minute for analysis and $0.008/minute for transcription; these reference cost fields are not a subscription invoice. Existing model defaults remain unchanged. Keep the same X-Request-ID, endpoint and exact file bytes after a network error or 5xx response; automatically creating a new ID can repeat inference and charges. Pending or uncertain requests return 409 request_in_progress; completed IDs return 409 request_already_completed. Changed bytes, task, model or key return 409 idempotency_conflict. Audio and responses are not retained for replay. On 429 upload_busy or model_busy, wait at least Retry-After seconds and reduce concurrency. Retry upload_busy with the same ID. A model_busy attempt is closed without inference or a charge: use a new ID after waiting. A 409 request_failed ID is closed; resolve the original error before a new attempt. Errors include error.code, error.message and error.request_id. Keep API keys server-side and share request IDs with support. Spectra-2 processes audio in North America, Europe, or Asia, routing each request by proximity, service health, and available capacity. Confirm the configuration with Oruk before sending audio if you require a specific processing region. Processing details: https://oruk.ai/security#processing. Model catalog: https://oruk.ai/models#spectra-2. Languages: https://oruk.ai/docs#spectra-2-languages. Full contract: https://oruk.ai/docs#spectra-2. OpenAPI: https://oruk.ai/openapi.json. ## Resonance 2 — available in preview Resonance 2 (`oruk-resonance-2`) is the new emotion and speaking-style model. Call the dedicated `POST /v1/audio/resonance-2?regime=f1` route. It uses existing Bearer keys and the same price and shared speech understanding minutes as Resonance 1. One audio minute uses one plan minute; existing trial limits, overage rates, and spending caps apply. No new plan or add-on is needed. New organizations require separate Resonance 2 approval; request access at https://oruk.ai/account/model-access. Plan or trial activation alone does not grant access. Legacy metered pricing matches Resonance 1 affect: $0.0100/audio minute, with a one-second minimum. Input: WAV, FLAC, MP3, M4A, OGG, WebM; 0.1–120 seconds, 30 MiB. Output: 31 continuous `scores`, six signed `axes`, 19 `unipolar` scores, and threshold-selected `labels`; no transcript, timestamps, or diarization. The POST returns one result; use the separate WebSocket route for streamed PCM and explicit commits. Axes are sad__happy, worried__relieved, disappointed__hopeful, hesitant__confident, tired__energetic, formal__casual. Negative favors the first label; positive favors the second; zero means no preference. A value of -0.8 means a 0.8 dominance score for the first label, not a categorical probability. Both ends cannot be selected together. Unpaired labels stay in [0,1]; scores do not sum to one. The default `f1` and optional `precision` regimes change selection thresholds, not continuous scores. Language-independent accuracy is not established. Use ordinary HTTP for the file route or the WebSocket protocol below; SDK 0.2.15 has no dedicated Resonance 2 helper for either transport. The default model `oruk-resonance` and its existing routes stay available. Full contract and billing: https://oruk.ai/docs#resonance-2. WebSocket: `wss://speech-api.oruk.ai/v1/audio/resonance-2/stream`, with Bearer authorization in the upgrade headers. Wait for `ready` (`sample_rate: 16000`, `encoding: float32le`, `idempotency: shared_http_ws`), then send mono 16 kHz float32 little-endian PCM without a WAV header in binary frames of 1–16,000 finite samples (at most 64,000 bytes). Commit JSON selects the buffered range: `{"type":"commit","id":"YOUR_STABLE_REQUEST_ID","start_sample":0,"end_sample":32000,"regime":"f1","scope":"live"}`. The end offset is exclusive. Public commits accept 0.1–120 seconds; `scope` is optional (`live` or `clip`) and does not reduce that limit. For live updates, use rolling windows up to 20 seconds, then commit the full clip. Website demos enforce 20-second live windows and 30-second clips. Results arrive as `{"type":"result","id":"…","result":{…},"timings_ms":{…}}`; `result` has the same scores and aggregation as HTTP, without transcription, timestamps, or diarization. Every new commit has the same billing rules as an HTTP request; overlapping analyses count separately. Authorization and available usage are checked for each commit. Use the original API key and the same ID, decoded PCM and regime for HTTP/WS replay; HTTP uses `X-Request-ID`. Completed results can be replayed for 24 hours without another charge, subject to live authorization. This replay window is not a physical-deletion guarantee. A pending request returns `409 request_in_progress`; do not switch to a fresh ID after an uncertain result. Send `{"type":"reset"}` between clips. Limits: 120 seconds buffered audio, 256 commits, 30-second idle timeout, 10-minute session. Reset does not reset commit or lifetime limits. Use a server-side WebSocket client with header support; this route has no browser API-key subprotocol and keys must not be placed in URLs. Full protocol: https://oruk.ai/docs#resonance-2-streaming. Research and reproducibility: https://oruk.ai/research/resonance-2#reproduce-diagnostic. The downloadable archive includes 546 original parsed response receipts, the calibration thresholds, protocol, and an offline scorer. It replays the reported single-sentence acted-speech diagnostic; it is not a fresh independent evaluation. Training overlap is unaudited, and these development-data results do not establish accuracy on other speakers, languages, or recording conditions. Download: https://oruk.ai/research/resonance-2/reproduction-2026-09-19.zip. ## Resonance 2 access Resonance 2 requires organization approval for new accounts. Existing accounts retain access. GET /v1/models/oruk-resonance-2/access reports status; POST the same endpoint with bearer authorization and JSON {"use_case":"Describe your application in 10–2,000 characters"} requests approval (202 pending). Use https://oruk.ai/account/model-access without an API key. Unapproved inference returns 403 model_access_required before billing. Approval works with existing API keys and normal plan/credit limits. A Resonance 2 trial invitation requires card-backed checkout, grants seven days on a self-serve plan, and then renews at the selected plan price unless canceled. The homepage demo remains public. ## OrukZero — synthetic speech detection Model ID: `orukzero`. POST https://speech-api.oruk.ai/v1/audio/synthetic-speech with an Oruk Bearer API key, multipart `file`, and optional `model=orukzero`. OrukZero is included at no additional charge with every active paid Oruk plan. It consumes no credits, included plan minutes, or metered overage, even when other model allowances are exhausted. Free trials and prepaid-only accounts are not paid subscriptions. Existing renewal grace for past-due plans applies. This is an exception to the plan-minute billing of other speech models. English speech; one WAV/FLAC/OGG/MP3, 1–60 seconds, 8–48 kHz, mono/stereo, maximum 12 MiB. Limit: 60 requests/minute per API key; honor Retry-After on 429. Response: model=orukzero, prediction=human|synthetic, synthetic_score, threshold=0.5, duration, model_revision, segments, usage.billed=false, usage.billing_mode=included_with_paid_plan, credits_used=0, plan_minutes_used=0. Scores are uncalibrated, not proof of authenticity. Long-clip aggregation is experimental. 401 means invalid key; 402 means paid plan required; 503 means temporarily unavailable. Uploaded audio is transient and not retained by this endpoint. The legacy request model ID oruk-synthetic-speech-1-preview remains an alias; new integrations and all responses use orukzero. The endpoint URL is unchanged. Docs: https://oruk.ai/docs/synthetic-speech Schema: https://oruk.ai/docs/synthetic-speech/openapi.json Authenticated access check: GET https://speech-api.oruk.ai/v1/models/orukzero/access