> This page is for Expression Measurement.

> 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.

# Audio

**The audio endpoints measure emotional expression in speech.** The server detects speech, groups it into utterances, and measures each utterance at a fixed interval. Every measurement has two lists of scores: `expressions`, such as `amusement`, and `voice_attributes`, such as `monotone`, which describe how the voice and the recording sound.

## Upload or realtime

Both endpoints return the same measurements for the same audio. They differ in how the audio arrives and how the results come back.

<table>
  <thead>
    <tr>
      <th width="20%" />

      <th>
        [Upload](/expression-measurement/docs/audio/upload)
      </th>

      <th>
        [Realtime](/expression-measurement/docs/audio/realtime)
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <th>
        Endpoint
      </th>

      <td>
        `POST /v1/expression/audio/file`
      </td>

      <td>
        `WSS /v1/expression/audio/realtime`
      </td>
    </tr>

    <tr>
      <th>
        Audio
      </th>

      <td>
        A WAV file or headerless samples, up to 25 MB
      </td>

      <td>
        Headerless samples, streamed as binary frames
      </td>
    </tr>

    <tr>
      <th>
        Results
      </th>

      <td>
        Every utterance and every measurement in one response
      </td>

      <td>
        `utterance.start`

        , 

        `measurement.result`

        , and 

        `utterance.end`

         messages while speech continues
      </td>
    </tr>

    <tr>
      <th>
        Configuration
      </th>

      <td>
        A 

        `config`

         part
      </td>

      <td>
        `session.update`

        , before the first audio frame
      </td>
    </tr>

    <tr>
      <th>
        Recorded as
      </th>

      <td>
        A run under the 

        `run_id`
      </td>

      <td>
        A run under the 

        `session_id`
      </td>
    </tr>

    <tr>
      <th>
        Use for
      </th>

      <td>
        Recorded media, for example to label a dataset or to evaluate generated audio
      </td>

      <td>
        Media as it happens, for example to route or monitor a live call
      </td>
    </tr>
  </tbody>
</table>

Both endpoints accept one audio format: signed 16-bit little-endian PCM at 16,000 Hz, mono.

> **Warning**
>
> **The audio model measures one speaker at a time.** To measure a conversation with more than one speaker, record each speaker on an isolated channel, then send each channel as separate mono audio in its own upload or realtime session.

## Supported languages

**The model behind the audio endpoints measures expression in speech in more than 50 languages, including 16 core languages:** Arabic, Bengali, English, French, German, Hebrew, Indonesian, Italian, Japanese, Korean, Polish, Portuguese, Russian, Spanish, Turkish, and Vietnamese. Requests have no language parameter, so the same request works across languages.

## Next steps

#### [Audio upload](/expression-measurement/docs/audio/upload)

Upload an audio file and receive measurements for every utterance.

#### [Audio realtime](/expression-measurement/docs/audio/realtime)

Stream audio and receive measurements for each utterance.