> ## Documentation Index
> Fetch the complete documentation index at: https://docs.poly.ai/llms.txt
> Use this file to discover all available pages before exploring further.

<AgentInstructions>

## Submitting Feedback

If you encounter incorrect, outdated, or confusing documentation on this page, submit feedback:

POST https://docs.poly.ai/feedback

```json
{
  "path": "/voice/multi-voice",
  "feedback": "Description of the issue"
}
```

Only submit feedback when you have something specific and actionable to report.

</AgentInstructions>

# Use more than one voice

> Assign multiple voices to simulate a team of agents.

Use multi-voice when you want callers to hear different voices across interactions – simulating a team of agents or varying the experience for repeat callers. You can configure this through the UI or programmatically in Python.

<img src="https://mintcdn.com/polyai/Qu880HppNqT19Eyr/images/voice/multi-voice-ui.png?fit=max&auto=format&n=Qu880HppNqT19Eyr&q=85&s=5c03e358e04612d53626fe0f09fb30fa" alt="multi-voice-ui" width="1846" height="964" data-path="images/voice/multi-voice-ui.png" />

<Tabs>
  <Tab title="Add voices">
    Click **New voice** to add additional voices to your agent. You can select from the available languages, genders, and styles or [add a new voice](/voice/add-a-new-voice).

    Once added, all voices will appear in the list and can be configured independently.

    <img src="https://mintcdn.com/polyai/Qu880HppNqT19Eyr/images/voice/multi-voice-add-voice.png?fit=max&auto=format&n=Qu880HppNqT19Eyr&q=85&s=be50609237086e92d6cc822ccd7040f1" alt="multi-voice-add-voice" width="1862" height="1314" data-path="images/voice/multi-voice-add-voice.png" />
  </Tab>

  <Tab title="Adjust weights">
    After adding multiple voices, use the weight sliders to define how frequently each voice is selected during conversations. All weights must add up to 100%.

    For example:

    * 80% main voice
    * 10% each for two alternates

          <img src="https://mintcdn.com/polyai/Qu880HppNqT19Eyr/images/voice/multi-voice-configure.png?fit=max&auto=format&n=Qu880HppNqT19Eyr&q=85&s=70e45a4d232b09b634f483f4267979c1" alt="multi-voice-configure" width="1640" height="1374" data-path="images/voice/multi-voice-configure.png" />
  </Tab>

  <Tab title="Configure settings">
    For each voice, you can fine-tune the advanced settings:

    * **Stability (%):** Control how consistent the voice sounds across generations.
    * **Clarity and Similarity (%):** Balance naturalness and similarity to the target voice.

          <img src="https://mintcdn.com/polyai/Qu880HppNqT19Eyr/images/voice/multi-voice-configure.png?fit=max&auto=format&n=Qu880HppNqT19Eyr&q=85&s=70e45a4d232b09b634f483f4267979c1" alt="multi-voice-settings" width="1640" height="1374" data-path="images/voice/multi-voice-configure.png" />
  </Tab>
</Tabs>

<div className="developer-only">
  ## Using Python in a code field

  You can configure this in any function, though this guide assumes you're using the [start function](/tools/start-tool).

  To use multiple voices, you need their voice IDs from your chosen TTS provider. Refer to the [function TTS provider configuration](/tools/classes) for full details on supported providers and their configuration options.

  Here is an example of how to configure multiple voices, where the agent is randomly assigned a voice at the start of each interaction:

  ```python theme={"theme":{"light":"github-light","dark":"github-dark"}}
  def start_function(conv: Conversation):
      conv.randomize_voice([
          VoiceWeighting(
              voice=ElevenLabsVoice(
                  voice_id="LcfCDJNUPlGQjkzn1xUU",
                  similarity_boost=0.2,
                  stability=0.4
              ),
              weight=0.5
          ),
          VoiceWeighting(
              voice=RimeVoice(
                  provider_voice_id="s3://path-to-manifest.json",
                  style="neutral"
              ),
              weight=0.5
          )
      ])
  ```

  * `conv.randomize_voice([...])`: Selects a voice at random based on the assigned weights.
  * `VoiceWeighting`: Associates a voice with a probability of being selected.
  * **Weights** define selection probability:
    * The sum of all weights must equal 1.0.
</div>

## Understanding voice weights

You can add a maximum of **ten voices** to an AI agent.

<Note>
  In the UI, weights are displayed as percentages (must total 100%). In code, weights are decimal values (must total 1.0).
</Note>

The `weight` parameter determines how often each voice is selected. The sum of all weights must equal **1.0** (or 100% in the UI).

Examples:

* One voice at `1.0`: Always uses that voice.
* Two voices at `0.5` each: Each is selected 50% of the time.
* Four voices at `0.25` each.

## Personalizing repeat caller experiences

Assigning different voices to repeat callers can help create a sense of interacting with different team members, which may reduce escalation requests. Use the `conv.randomize_voice()` method in your [start function](/tools/start-tool) to vary voice selection across interactions.

## Related pages

<CardGroup cols={2}>
  <Card title="Voice library" icon="list" href="/voice/voice-library">
    Browse and select voices
  </Card>

  <Card title="Choosing a good voice" icon="ear-listen" href="/voice/choosing-a-good-voice">
    Guidelines for voice selection and matching
  </Card>

  <Card title="Add a voice" icon="plus" href="/voice/add-a-new-voice">
    Configure custom voices programmatically
  </Card>

  <Card title="Agent Voice" icon="user" href="/voice/agent">
    Configure voice settings and fine-tuning
  </Card>
</CardGroup>
