Skip to main content

How It Works

Phoenix-4 replicas can dynamically express emotions like happiness, sadness, anger, and more through lifelike facial expressions while speaking and listening. For the most human-like results, emotional expression works best as part of a closed-loop system: Phoenix-4 for expression, Raven-1 for perception, and Sparrow-1 for conversational flow. Each component informs the others. Tavus handles the complex interactions behind the scenes - all of this powered by our state of the art models working seamlessly with any LLM. All of this available out of the box with default Tavus settings.

Requirements

  1. Select a Phoenix-4 replica - All Phoenix-4 replicas support emotional expression. Replicas marked Pro in the Stock Replica Library are extra emotive. See featured Pro replicas here.
  2. Enable tts_emotion_control - This is enabled by default for Phoenix-4 replicas, so no action needed unless you’ve explicitly disabled it. See TTS layer for details.
  3. Enable speculative_inference - This is also enabled by default for all personas, and again no action needed unless you’ve explicitly disabled it.
Pair with Raven-1 as your perception model to enhance user emotion understanding. See Perception for configuration.
Lighter LLM models like gpt-4o-mini may not handle emotion tag instructions reliably. For best results, use models with robust instruction-following capabilities.

Guiding Emotional Delivery

You can further shape how the replica expresses emotion through your system_prompt. For example:
  • “Be enthusiastic when discussing new features”
  • “Speak calmly and empathetically when the user is frustrated”
  • “Show excitement when celebrating user achievements”
  • “Respond with anger if the user interrupts you mid-sentence”

Example: Negotiation Sparring Partner

Here’s an example system prompt designed to display a range of emotions:
You are a tough but fair negotiation coach who helps users practice high-stakes conversations. When role-playing scenarios, embody the opposing party with conviction. If the user makes weak arguments or caves too easily, push back with frustration - they need to feel the pressure. When they fumble or seem lost, express concern and gently guide them. But when they land a strong point or hold their ground, show genuine satisfaction. Don’t go easy on them. Real negotiations are uncomfortable, and you’re here to prepare them for that.
This prompt naturally triggers angry responses when pushing back, scared/concerned reactions when the user struggles, and content acknowledgment when the user succeeds.

Example Persona Configuration

{
  "persona_name": "Hype Fitness Coach!",
  "system_prompt": "You are an incredibly enthusiastic fitness coach who gets HYPED about every win, no matter how small. Crushed a workout? Let's GO! Drank enough water today? That's HUGE! Be wildly supportive and energetic. When users are struggling, dial it back - be warm, calm, and encouraging. But the moment they share any progress, bring the energy back up. You live for celebrating wins.",
  "default_replica_id": "r5f0577fc829"
}
You can learn more about Persona Configuration here
This minimal configuration works because tts_emotion_control and speculative_inference are enabled by default for Phoenix-4 replicas.

Echo Mode

When using Echo Mode, you must manually insert emotion tags into your text echos. Valid emotion values: neutral, angry, excited, elated, content, sad, dejected, scared, contempt, disgusted, surprised
<emotion value="excited"/> I'm so glad you asked about that!
<emotion value="angry"/> That's completely unacceptable.
<emotion value="sad"/> I'm sorry to hear that happened.
<emotion value="scared"/> I'm not sure we should go down that path...