Skip to content

Hume AI Voice and EVI: How to Add a Real-Time Avatar

Hume AI Voice and EVI experience connected to a real-time avatar

You can add a real-time avatar to Hume AI Voice by consuming EVI’s audio_output events and routing the same assistant speech to playback and Spatius. Motion Server converts that speech into motion data, while AvatarKit renders the character locally. The application must keep audio ordering, completion, and interruption synchronized across both paths.

Independent guide: Spatius is not affiliated with, endorsed by, or an official integration partner of Hume AI. This article describes an interoperability pattern based on public Hume and Spatius documentation, not a packaged native connector.

Last verified: September 24, 2026.

What Hume AI and Spatius each own

Hume’s Empathic Voice Interface is the conversational layer. It receives live user audio, manages the interaction, and returns structured messages that include transcripts, assistant text, output audio, and response lifecycle events.

Spatius starts at the visual boundary. It receives the assistant speech that the application has approved for playback, generates motion data, and renders the avatar locally through AvatarKit. It does not replace Hume’s voice model, prompts, tools, conversation state, or turn-taking.

ResponsibilityHume EVI applicationSpatius
User microphone and conversation sessionOwnsDoes not own
Assistant behavior, tools, and voiceOwnsDoes not own
Final assistant speechProduces and playsReceives as avatar-driving input
Audio ordering and turn coordinationApplication responsibilityConsumes the coordinated turn
Facial motionDoes not need to ownMotion Server generates motion data
Avatar renderingDoes not ownAvatarKit renders locally on the client
Product UI, captions, analytics, and handoffApplication responsibilityDoes not own

This separation lets a product keep Hume’s expressive voice experience while adding a visible character to a web, mobile, kiosk, tutoring, or guided-workflow interface.

Reference architecture

The central rule is simple: the same Hume output audio that the user hears should drive the avatar.

User microphone
    ↓
Hume EVI session
    ├─ conversation, tools, and interruption events
    └─ assistant audio_output messages
                   ↓
           application audio coordinator
              ├─ playback queue
              └─ decode and format once
                          ↓
                 Spatius Motion Server
                          ↓ motion data
                 AvatarKit client render

Do not send the user’s microphone audio to the avatar layer. Prompts, private transcripts, tool arguments, customer records, and internal agent state also do not need to cross this boundary merely to animate the character.

The audio path that keeps the avatar synchronized

Hume’s audio guide documents audio_output messages whose data field contains base64-encoded WAV audio. Because output may arrive faster than it can be played, the application needs an ordered playback queue.

For the avatar path, decode each message once and preserve its place in the assistant turn. Use the decoded speech for two coordinated consumers: the user’s playback path and the Spatius input path. If the active Spatius session requires canonical mono signed 16-bit little-endian PCM, decode the WAV container and perform one deterministic conversion before forwarding samples. Repeated WAV files must not be concatenated as though their headers were raw PCM.

Audio ruleWhy it matters
One assistant turn ID across both systemsPrevents late chunks from animating a newer response
One ordered source of assistant speechKeeps visible motion tied to what the user actually hears
One documented format conversionAvoids sample-rate, channel, and container ambiguity
Separate completion and interruption commandsPrevents normal endings from being treated as cancellations
One authoritative playback pathAvoids echo and duplicate output

Implementation steps

1. Validate EVI before adding the avatar

Start with Hume’s TypeScript quickstart. Confirm microphone capture, agent responses, tool behavior, ordinary completion, and user interruption without a second real-time system attached. Otherwise an audio failure can be misdiagnosed as an avatar failure.

2. Keep long-lived credentials on the server

Use Hume’s current client-safe authorization flow instead of exposing a permanent API key in the browser. Apply the same boundary to Spatius: keep the Spatius API key on your backend and provide AvatarKit only the short-lived session material documented in the Direct Mode client guide.

3. Create one identifier for each assistant turn

Create an utterance ID when the response begins and attach it to playback chunks, converted avatar audio, completion, and interruption. A monotonically increasing local sequence is enough if it is never reused during a session.

The coordinator should reject any chunk whose turn has already completed or been interrupted. That rule is more reliable than trying to infer the active response from transcript text.

4. Decode and fan out each output message

Base64-decode audio_output.data, decode the WAV container, and enqueue the speech for user playback. Convert the same decoded speech to the format required by the current Spatius session and stream it in order to Motion Server. The Spatius audio specification applies to assistant speech audio, not microphone input.

on Hume audio_output:
  verify the active utterance ID
  decode the WAV payload once
  enqueue the decoded speech for playback
  convert and enqueue the same speech for Spatius

on normal response completion:
  finish both queues
  signal end of avatar input

on user interruption:
  stop playback for that utterance
  clear pending avatar audio for that utterance

This is architecture-level pseudocode. Use the current Hume event definitions and current AvatarKit SDK reference for exact method names rather than copying an unverified adapter.

5. End a completed response cleanly

Hume emits response lifecycle messages, including assistant_end, around a completed assistant turn. After the final speech chunk has entered both queues, finish the matching Spatius input. Normal end-of-input lets already accepted speech complete; it is not the same action as discarding an interrupted response.

6. Stop both systems on barge-in

Hume documents user_interruption and a new user_message as reasons to stop queued assistant playback. Apply the same event to the matching avatar turn. If the sound stops but buffered avatar input continues, the character appears to ignore the user.

EventPlayback actionAvatar action
First assistant audioStart or continue the active queueStart the matching Spatius utterance
More audio for the active turnPreserve orderPreserve the same order
Normal assistant endDrain and completeSignal normal end-of-input
User interruptionStop and clear queued speechInterrupt and clear the same turn
Late chunk from a closed turnDropDrop
Either connection failsRecord the failed layerShow a controlled audio-only or retry state

What Spatius adds beyond an audio visualizer

A waveform or talking indicator can react to amplitude, but it cannot provide the speech-driven facial motion of an avatar. The Spatius architecture uses Motion Server to return motion data while AvatarKit renders the character locally, rather than sending a second finished video stream to the client.

That design leaves the application in control of layout, camera, captions, tool state, accessibility controls, fallback UI, and the avatar’s placement in the product. It also lets teams measure voice and avatar performance separately:

MeasurementHume/application layerSpatius/avatar layer
Time to first assistant audioMeasure hereInput boundary
Audio gaps or conversation errorsMeasure hereNot included
Audio-to-motion deliveryNot includedMeasure here
Client render stabilityProduct clientMeasure AvatarKit on target devices
Interruption correctnessShared product eventMust stop with audio

Useful logs include utterance ID, Hume event type, chunk sequence, first-audio time, first-motion time, conversion failures, interruption reason, and cleanup result. The guide to evaluating real-time avatar latency explains how to keep those stages separate.

Cost and use-case fit

Hume publishes EVI plans, usage allowances, overages, and concurrency terms on its official pricing page. Spatius and application infrastructure are separate cost layers, so model them independently using Spatius pricing. Do not combine the vendors into one universal per-minute claim without a workload model.

This architecture is a good fit when users already have a screen and the product wants Hume’s voice experience to gain a branded visual presence. It is usually unnecessary for a phone-only deployment. It may also be the wrong choice if the team wants one vendor to own the complete conversation stack and stream finished avatar video.

For a provider-neutral implementation pattern, see how to stream TTS audio to a real-time avatar.

Hume AI avatar FAQ

Is this an official Hume AI and Spatius integration?

No. This is an independent interoperability guide based on public interfaces. It does not claim a Hume partnership or packaged native connector.

Does Spatius replace Hume EVI?

No. Hume remains the voice and conversation layer. Spatius receives the approved assistant speech and adds motion generation plus local avatar rendering.

Should the avatar animate from the transcript?

Use transcripts for captions and UI state. Drive the avatar from the final assistant audio so its motion follows the sound the user actually hears.

Can EVI WAV payloads be treated as raw PCM?

No. Decode the WAV container and convert the samples to the format required by the Spatius session. Do not concatenate repeated WAV headers as raw PCM.

What should a proof of concept verify?

Verify authorization, audio decoding, ordering, format conversion, avatar readiness, normal completion, barge-in, stale-chunk rejection, reconnects, and rendering on target devices.

Add a visual layer without replacing Hume EVI

Hume can remain the expressive voice and conversation system. Spatius can remain the visual embodiment layer. A shared audio coordinator and interruption boundary keep the two systems understandable, testable, and replaceable.

Bring your Hume EVI architecture, target client, and audio configuration. We will help you evaluate the Spatius handoff without replacing the voice-agent stack. Request a demo, or ,或Review Spatius pricing.。

Give your agent a face that responds.

Start building