Guide to configuring the Empathic Voice Interface (EVI).

The Empathic Voice Interface (EVI) is designed to be highly configurable, allowing developers to customize the interface to align with their specific requirements. Configuration of EVI can be managed through two primary methods: an EVI configuration and session settings.

Configuration options

EVI configuration options affect the behavior and capabilities of the interface, and include the following configuration options:

OptionDescription
VoiceSelect a voice from a list of 8 preset options or create a custom voice. For further details, see our guide on creating custom voices.
EVI versionSelect the version of EVI you would like to use. For details on similarities and differences between EVI versions 1 and 2, refer to our feature comparison.
System promptProvide a system prompt to guide how EVI should respond. For details on expressive prompt engineering, refer to our prompting guide.
Language modelSelect a language model that best fits your application’s needs. For details on selecting a supplementary language model to meet your needs, such as optimizing for lowest latency, refer to our EVI FAQ. To incorporate your own language model, refer to our guide on using your own language model.
ToolsChoose user-created or built-in tools for EVI to use during conversations. For details on creating tools and adding them to your configuration, see our tool use guide.
Event messagesConfigure messages that EVI will send in specific situations. For details on configuring event messages, see our API Reference.
TimeoutsDefine limits on a chat with EVI to manage conversation flow. For details on specifying timeouts, see our API Reference.

Configs, as well as system prompts and tools, are versioned. This versioning system supports iterative development, allowing you to progressively refine configurations and revert to previous versions if needed.

Default configuration options

EVI is pre-configured with a set of default values, which are automatically applied if you do not specify a configuration. The default configuration includes a preset voice and language model, but does not include a system prompt or tools. To customize these options, you will need to create and specify your own EVI configuration.

The default configuration settings are as follows:

EVI 1EVI 2
Language model: Claude 3.5 SonnetLanguage model: hume-evi-2
Voice: ItoVoice: Ito
System prompt: Hume defaultSystem prompt: Hume default
Tools: NoneTools: None

Default configuration settings are subject to change. To ensure your setup remains consistent should changes occur, we recommend choosing explicit options when defining your EVI configuration.

Create a configuration

See instructions below for creating an EVI configuration through the Portal. In the Portal, navigate to the EVI Configurations page. Click the Create configuration button to begin.

EVI configurations page without existing configs
1

Choose EVI version

To learn more about the differences between EVI versions 1 and 2, please see the feature comparison guide.

Version selection, the first step of EVI configuration
2

Choose voice

Select a voice from Hume’s 8 presets, or create your own custom voice. To learn more about voice customization options on the Hume Platform, please visit the Voices page.

Voice selection, the second step of EVI configuration
3

Set up the LLM

Select a supported language model and specify a system prompt.

Supplemental LLM setup, the third step of EVI configuration
4

Add tools

Equip EVI with built-in tools, like web search, or custom user-defined tools. Click the + Add button to select an existing tool or create a new one.

Tool use addition, the fourth step of EVI configuration
5

Name config

Name your EVI configuration and add an optional description.

Providing a name and description, the fifth and final step of EVI configuration
6

Test the configuration

The newly created configuration can now be tested. From the EVI Config details page, click Run in playground to test it out.

The page shown after a successful EVI configuration; the ID and name are displayed, and two buttons appear ("Run in playground" and "Edit configuration")
Successful EVI config creation

Once in the EVI Playground, click Start call to connect to EVI with your configuration.

EVI playground
Using an EVI configuration in the Playground

The event message and timeout configuration options are not part of the initial config creation flow. However, you can set these options at any time in the playground or from the configuration’s edit page after your configuration has been created.

Event message and timeout options in playground
Event message and timeout options in the Playground
Event message and timeout options on edit page
Event message and timeout options in the Config edit page
7

Apply the configuration

After creating an EVI configuration, you can use it in your conversations with EVI by including the config_id in the query parameters of your connection request. You can find the config_id on the configuration’s edit page. To access this page, first navigate to the configurations page and then click the Edit button for the desired configuration.

Configuration ID

See the sample code below which showcases how to apply your configuration:

1import { Hume, HumeClient } from 'hume';
2// instantiate the HumeClient with credentials
3// avoid hard coding your API key, retrieve from environment variables
4const client = new HumeClient({
5 apiKey: <YOUR_API_KEY>,
6 secretKey: <YOUR_SECRET_KEY>,
7});
8// instantiate WebSocket connection with specified EVI config
9const socket = await client.empathicVoice.chat.connect({
10 configId: <YOUR_CONFIG_ID> // specify config ID here
11});

Session settings

EVI configurations are persistent and version-controlled. In contrast, session settings are temporary and apply only to the current session, such as microphone settings. These parameters can be adjusted dynamically based on the requirements of each session to ensure optimal performance and user experience.

Refer to the API reference for detailed descriptions of the various session settings options.

Updating the session settings is only a requirement when the audio input is encoded in PCM Linear 16. If this is the case, be sure to send the following Session Settings message prior to sending an audio input:

SessionSettings
1{
2 "type": "session_settings",
3 "audio": {
4 "channels": 1,
5 "encoding": "linear16",
6 "sample_rate": 48000
7 }
8}