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.
| You need | POST endpoint | Response |
|---|---|---|
| Words and timestamps | /v1/audio/transcriptions | Transcript and timed segments, without emotion or speaking-style scores. |
| Emotion alone | /v1/audio/emotions | Selected emotion labels and scores, without transcript text. |
| Speaking style alone | /v1/audio/styles | Selected speaking-style labels and scores, without transcript text. |
| Emotion and speaking style | /v1/audio/affect | Both sets of acoustic annotations, without transcript text. |
| Words, emotion and speaking style | /v1/audio/analysis | Transcript, 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.
{
"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.
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.txtFollow 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.
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.
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.