> This page is for Audio Decisions.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://dev.hume.ai/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://dev.hume.ai/_mcp/server.

# Interpreting answers

**An answer estimates how human raters would respond, and your code makes the decision by comparing the answer with a threshold you set on your own audio.** For what each field contains, see [Primitives](/audio-decisions/docs/primitives).

## Acting on each answer type

<table>
  <thead>
    <tr>
      <th width="13%">
        Type
      </th>

      <th>
        Act on
      </th>

      <th width="40%">
        Before acting
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        [`noul`](/audio-decisions/docs/primitives#noul)
      </td>

      <td>
        Compare the share with a threshold.
      </td>

      <td>
        A value near 0.5 means raters would split, not that the model is unsure.
      </td>
    </tr>

    <tr>
      <td>
        [`choice`](/audio-decisions/docs/primitives#choice)
      </td>

      <td>
        Use 

        `choice`

         for one label. To act on one option, compare its probability with a threshold.
      </td>

      <td>
        A low 

        `confidence`

         means raters would split. Send the answer to a person.
      </td>
    </tr>

    <tr>
      <td>
        [`score`](/audio-decisions/docs/primitives#score)
      </td>

      <td>
        Compare 

        `score`

         with a level index, read through 

        `legend`

        . To act on the top of the scale, add the top levels' probabilities.
      </td>

      <td>
        A middle 

        `score`

         can mean agreement or a split. Check 

        `probabilities`

         or 

        `confidence`

        .
      </td>
    </tr>

    <tr>
      <td>
        [`span`](/audio-decisions/docs/primitives#span)
      </td>

      <td>
        Keep spans whose 

        `probability`

         is at or above a threshold.
      </td>

      <td>
        Times count from the start of the file you sent. For a file cut from a longer recording, add the cut's start time.
      </td>
    </tr>
  </tbody>
</table>

## Setting thresholds

Set each threshold from audio where you already know the answer. See [Check your questions on audio you know](/audio-decisions/docs/writing-questions#check-your-questions-on-audio-you-know) for how to build that set.

1. **Weigh the cost of each kind of error.** A lower threshold catches more true cases and flags more audio in error, and a higher one does the reverse. Choose the point where the errors cost you least, such as a low threshold when a missed case is costly and a person reviews each flag.
2. **Use a review band when a person can check borderline cases.** Act on answers above an upper threshold, ignore answers below a lower one and send the answers between them to a person.
3. **Check thresholds again when the questions, the audio or the model change.** A threshold holds only for the request it was set on: the same wording, the same other questions and the same order. See [Build a decision from several questions](/audio-decisions/docs/writing-questions#build-a-decision-from-several-questions). It also holds only for the kind of audio it was set on, so a threshold set on studio recordings can be wrong for phone calls. Answers can change when the model is updated, so check thresholds again after an update.

Answers on clips labeled yes and no, with thresholds of 0.3 and 0.7

Yes 15 clips

No 15 clips

Ignore Send to a person Act

Decision

0 0.3 0.7 1

One clip labeled yes is below 0.3 and one labeled no is above 0.7, so the thresholds still make two errors. The 8 clips between them go to a person.

## Comparing answers

1. **Compare answers only between requests with the same questions in the same order.**
2. **Send each request once.** The same request with the same file returns the same answers, so averaging repeated requests adds nothing.
3. **Compare `score` values only on the same scale.** A `score` of 2 on five levels and a `score` of 2 on three levels describe different positions, and changing the wording of the levels can move the answer.

## Combining answers

Your code can combine the answers to several questions into one decision. This response answers the [support call request](/audio-decisions/docs/writing-questions#reviewing-support-calls) from Writing questions:

#### response

```json
{
  "run_id": "019a1f3c-7d2e-7b41-9c58-2e6f4a1d8b03",
  "answers": {
    "agent_tone": {
      "type": "choice",
      "choice": "curt",
      "confidence": 0.3531,
      "probabilities": {
        "warm": 0.1186,
        "neutral": 0.3127,
        "curt": 0.5687
      }
    },
    "caller_frustration": {
      "type": "score",
      "score": 3.1258,
      "confidence": 0.4072,
      "probabilities": {
        "0": 0.0214,
        "1": 0.0487,
        "2": 0.1312,
        "3": 0.3801,
        "4": 0.4186
      },
      "legend": {
        "0": "Not at all",
        "1": "2",
        "2": "3",
        "3": "4",
        "4": "Extremely"
      }
    },
    "background_noise": {
      "type": "noul",
      "noul": 0.0841
    },
    "cancel_request": {
      "type": "span",
      "spans": [
        {
          "audio_start_ms": 182340,
          "audio_end_ms": 184910,
          "probability": 0.8812
        }
      ]
    }
  },
  "received": {
    "input_tokens": 20933
  }
}
```

A program that flags a call for review when any one of these answers crosses its threshold might read this response as follows. The thresholds here show the method; set your own from labeled audio.

1. **`agent_tone`**: the probability of `curt` is 0.5687. With a threshold of 0.5 on `curt`, the agent counts as curt.
2. **`caller_frustration`**: the probabilities of the top two levels, "4" and "Extremely", add to 0.7987. With a threshold of 0.7 on that sum, the caller counts as very frustrated.
3. **`background_noise`**: the estimated share of raters who would hear distracting background noise is 0.0841. With a threshold of 0.5, the call does not count as noisy.
4. **`cancel_request`**: one span, from about 3:02 to 3:05, has a `probability` of 0.8812. With a threshold of 0.8, the caller asks to cancel at that point.

`agent_tone`

warm 0.12

neutral 0.31

curt 0.57

0 Threshold 0.5 1

`caller_frustration`

0.02 0.05 0.13 0.38 0.42

Not at allindex 0 2index 1 3index 2 4index 3 Extremelyindex 4

Mean level 3.13

The top two levels add to 0.80, above the threshold of 0.7.

`background_noise`

Yes 0.08

0 Threshold 0.5 1

`cancel_request`

3:02 to 3:05Probability 0.88

0:00 1:00 2:00 3:00 4:00

The span's probability is above the threshold of 0.8.

The call is flagged, and the reviewer can start listening at 3:02. Background noise is below its threshold, so it does not affect the decision.

## Storing answers

Answers come only from the decisions response. The [run endpoints](/audio-decisions/docs/runs) return a run's status and the request it evaluated, but not its answers. Store each answer with its `run_id` and the questions that produced it, so you can check your thresholds again later against the same answers.

## Next steps

#### [Writing questions](/audio-decisions/docs/writing-questions)

Learn how to write questions that get useful answers, and which questions to avoid.