Skip to content

Try Resonance 2 early.

Tell us a little about yourself and what you’re building.

A brief description of your use case.

We’ll use these details to review your application and contact you about access. Privacy policy

Explore oruk

Speech analytics

Speech Analytics API

Turn prerecorded English calls and meetings into transcripts, selected scores from 15 emotion labels and 16 speaking-style labels — one synchronous REST call per file.

Plans from $9/month · 7-day free trial · minutes included

Talk to us about volume

A person replies from access@oruk.ai within one business day.

Prefer self-serve? Start a 7-day free trial on any plan.

curl --fail-with-body https://speech-api.oruk.ai/v1/audio/analysis \
  -H "Authorization: Bearer $ORUK_API_KEY" \
  -F file=@call.wav -F model=oruk-resonance

Illustrative response · values depend on the recording

{
  "model": "oruk-resonance",
  "text": "I need help with this order.",
  "emotions": [{ "label": "frustrated", "score": 0.83 }],
  "styles": [{ "label": "confident", "score": 0.72 }],
  "usage": { "audio_seconds": 4.2, "billable_seconds": 4.2 }
}

Four analytics signals, one API

Transcripts

English transcription with time-ordered segments. Word timings appear when returned by the selected workflow.

Emotion

Selected scores from 15 emotion labels per acoustic segment.

Speaking style

Selected scores from 16 speaking-style labels describing delivery.

Unified analysis

Transcript, emotion, style, and tagged text from one request.

With Resonance, unified analysis and transcription each use one minute from the shared other-model allowance per minute of audio. Builder includes 2,500 other-model minutes for $49/month. Orukeet has a separate allowance with its own task rates. Contact us for Enterprise volume rates. Full plan details on the pricing page.

Evaluating customer calls? Start from AI call analytics for the category, or go straight to the contact-center speech analytics workflow.

Choose the output your application will use

These are Resonance file endpoints. Send model=oruk-resonance with your English recording and choose one task. If your review tool needs words and acoustic annotations, analysis returns them in one request. Separate transcription and affect requests each process and meter the recording again.

Choose a Resonance endpoint by the output your application needs
You needPOST endpointResponse
Words and timestamps/v1/audio/transcriptionsTranscript and timed segments, without emotion or speaking-style scores.
Emotion alone/v1/audio/emotionsSelected emotion labels and scores, without transcript text.
Speaking style alone/v1/audio/stylesSelected speaking-style labels and scores, without transcript text.
Emotion and speaking style/v1/audio/affectBoth sets of acoustic annotations, without transcript text.
Words, emotion and speaking style/v1/audio/analysisTranscript, both annotation sets and tagged text. Add diarize=true for speaker turns.

Segment boundaries depend on the task. Without diarization, an acoustic interval can span more than one speaker. Speaker labels from a diarized response belong to that recording; they do not identify a customer, agent, or returning person. Read the speaker-turn workflow before assigning application roles.

Inspect a real conversation result

This 14.45-second recording comes with its saved Resonance analysis. Listen to the first passage, then compare the words with the model annotations below. You can inspect it without an account or a new API request.

Open Yap 1K, The Agentic Data Company (2026), CC BY 4.0. Oruk excerpted and downmixed the audio. Attribution and scope. These are saved model outputs, not human labels or a new accuracy measurement.
Saved analysis response · first speaker turn
{
  "id": "speech_a852195bbb04415d8b506d94d5a09148",
  "task": "analysis",
  "model": "oruk-resonance",
  "duration": 14.45,
  "segments": [
    {
      "id": 0,
      "text": "I'm sorry. The price of food has gone up so much. I mean...",
      "start": 0.185,
      "end": 4.325,
      "tagged_text": "I'm sorry. The price of food has gone up so much. I mean... <|casual|> <|disappointed|>",
      "words": [],
      "emotions": [
        {
          "label": "disappointed",
          "score": 0.8679338097572327
        }
      ],
      "styles": [
        {
          "label": "casual",
          "score": 0.8688268065452576
        }
      ],
      "speaker": "speaker_0"
    }
  ]
}

The first turn runs from 0.185 to 4.325 seconds. Its text contains the transcript; emotions returns disappointed at 0.868, while styles returns casual at 0.869. Keep those annotations separate from the words. The words array is empty here: this result has speaker-turn boundaries, not individual word timings. Do not invent timestamps for the missing words.

Read the complete saved JSON for the other three turns. It retains historical reference cost fields; current subscription charges follow your plan allowance and overage rate. Scores are model annotations, not probabilities of a person’s feelings, and several labels can appear on one interval.

Open the result as a local review panel

With Python 3.10 or later and curl, run these commands and open review.html in your browser. Keep recording.wav beside it. The panel replays each returned interval and searches the saved annotations without uploading the audio again.

Terminal · inspect saved output without an API key
mkdir oruk-call-review
cd oruk-call-review
curl --fail --location -o call-review.py https://oruk.ai/examples/call-review.py
curl --fail --location -o response.json https://oruk.ai/samples/conversations/02-grocery-prices.oruk.json
curl --fail --location -o recording.wav https://oruk.ai/samples/conversations/02-grocery-prices.wav
curl --fail --location -o attribution.txt https://oruk.ai/examples/call-review-attribution.txt
python3 call-review.py --response response.json --audio recording.wav --output review.html --attribution-file attribution.txt

Follow the Python call-review guide to analyze your own recording and handle missing fields or failed requests. For a service, keep keys on your server and set bounded retries and timeouts with the production guide. Your application controls access to recordings and the reports it saves.

Published benchmark, with its limits

speech-emotion-bench

77.8% accuracy

Top measured result in our July 2026 release. Open models use the full 64,384 held-out clips; closed/API and audio-LLM systems use a fixed 5,000-clip subset. The highest-scoring non-oruk row is emotion2vec+ seed at 68.7%. The caveat, stated plainly: the oruk entry is trained in-distribution while other systems are evaluated zero-shot. This seven-class result does not establish the current 15-label endpoint’s accuracy on your recordings. Protocol and downloadable results are on the methodology page.

What a response means

A returned emotion either passed a model-specific threshold or was the highest-scoring fallback when none passed. Presence alone is not a confidence test. A score of 0.83 is a model output, not an 83% probability of someone’s feelings. Validate scores on your speakers and recording conditions before setting application rules.

Try it yourself first: run the live analyzer on your own voice, no account needed.

Data handling: Request audio is discarded after processing; Resonance 2 streams also buffer audio in memory until reset or session closure. Resonance 2 result payloads, without raw audio, are stored for durable settlement and same-ID replay. Authorized replay is available for 24 hours; this is not a physical-deletion deadline. Optional speaker diarization retains uploaded audio for up to 48 hours and speaker-label results for up to 24 hours. Oruk does not use customer audio or outputs to train, fine-tune, or evaluate models without your explicit written agreement. Processing details are in the privacy policy.

Talk to oruk

Plans from $9/month. $0 today, cancel any time.

Exactly what you are buying

The limits below are stated here so you do not discover them after integrating.

File analysis and live phrase emotion
Full emotion and speaking-style analysis uses completed English recordings. Use oruk-realtime for live transcript tokens and phrase-level emotion; speaking-style analysis remains in the file API.
Input
Resonance 1 accepts prerecorded English audio: WAV, FLAC, MP3, M4A, OGG, or WebM, up to 30 MB and 60 minutes per file.
Realtime preview
The separate Realtime preview streams transcription in 32 locales with automatic language detection and phrase-level emotion scores. Resonance 2 returns 15 emotion and 16 speaking-style scores for explicit WebSocket commits or file requests, without transcription or timestamps. Original unified analysis uses the English file endpoints.
File limits and formats
Up to 30 MB and 60 minutes per file. WAV, FLAC, MP3, M4A, OGG, and WebM are supported.
Request behavior
File endpoints return a synchronous JSON response with measured audio duration. Realtime uses WebSocket events for live tokens and phrase-level emotion. Resonance 2 WebSocket commits return expression scores for a buffered sample range.
Pricing
Monthly plans start at $9. Resonance, Fourier, Realtime, and Proficiency share one audio-minute allowance. Orukeet has a separate allowance; its optional tasks use that allowance at their listed rates. The other-model allowance ranges from 250 minutes on Hobby to 20,000 on Production. Extra usage follows each allowance's published rates. Self-serve plans start with a 7-day free trial. Contact us for Enterprise pricing. Details on the pricing page.
Data retention and training
Request audio is discarded after processing; Resonance 2 streams also buffer audio in memory until reset or session closure. Resonance 2 result payloads, without raw audio, are stored for durable settlement and same-ID replay. Authorized replay is available for 24 hours; this is not a physical-deletion deadline. Optional speaker diarization retains uploaded audio for up to 48 hours and speaker-label results for up to 24 hours. Oruk does not use customer audio or outputs to train, fine-tune, or evaluate models without your explicit written agreement.
What scores are — and are not
Emotion scores are model annotations selected with model-specific thresholds, not probabilities of inner feelings. They are not intent, truth, medical, employment, or psychological judgments, and must not be the sole basis for consequential decisions. See responsible use.
Model and version stability
Models are versioned; Resonance and Fourier are stable, Realtime and Proficiency 1 are in preview. Changes are announced on the changelog.
Support
Email access@oruk.ai; the production guide covers retries, limits, and error handling.
Talk to oruk

Plans from $9/month. $0 today, cancel any time.

Evaluate on your own calls

Start a 7-day free trial and run the API on your recordings, or use the form above and a person will help you scope an evaluation.