Elevenlabs "other voice ID" broken

In the Agent builder under Models & Voice, if I choose:

Text-to-speech (TTS): Model: ElevenLabs Eleven Multilingual v2 Voice: Other voice ID

and then put a voice ID from ElevenLabs, the agent does not work when pressing “Start Call”

Thanks for the heads up. A PR is in progress to fix this.

Hey, after 3 months it is still broken. Any updates on this?

What voice ID are you using?

It is not a specific id that doesn’t work. none of the ones I try work, just like last time. If I use Cartesia with ids from their library this is not an issue. So it is specifically Elevenlabs id not working.

Just to give an example id: cSZZzXz0LYKmNrdZh6rj

But none from the Elevenlabs id work when you choose “Other voice ID” and provide an id from the Elevenlabs library.

@williamBP Confirmed pattern: Agent Builder’s “Other voice ID” field on ElevenLabs is broken on the UI/wire path itself, not voice-ID specific. Cartesia path works because it uses a different lookup. A PR was acknowledged in February but didn’t land.

Workaround: skip Agent Builder for TTS and configure in code. Pass the voice ID directly to the ElevenLabs plugin constructor in your AgentSession; that bypasses the broken form and works for any ElevenLabs library ID.

Thanks, I would love for the UI to work properly as I am in an early stage of testing and I am more comfortable with no code solutions at this stage. So still a heads up for @CWilson :slight_smile:

Are these public voice id. Where are you getting these ids? What is an example ID that does not wokr?

There is also a newly added voice explorer in the dashboard: https://cloud.livekit.io/projects/p_/voices/library

I tried searching for this in Voice Library | ElevenLabs but it doesn’t show up :confused:

It seems like that example id was not active anymore. But yes I get my ids from the elevenlabs library.

But the issues remains. Here I try with KmnvDXRA0HU55Q0aqkPG and the same issue happens (see picture).

It gives the following error even with ids that you can look up in the elevenlabs library:

type=‘tts_error’ timestamp=1778848077.5933764 label=‘livekit.agents.inference.tts.TTS’ error=APIError(‘LiveKit Inference TTS returned error: {“type”:“error”,“code”:“BAD_REQUEST”,“data”:“A voice with voice_id KmnvDXRA0HU55Q0aqkPG does not exist.”,“retryable”:false}’, body=None, retryable=True) recoverable=True

Cc: @williamBP

Updating my read on this. With the new error log (livekit.agents.inference.tts.TTS returning ElevenLabs BAD_REQUEST: voice does not exist), the wire path is actually working. The likely mechanism is account scoping: LK Inference resolves ElevenLabs voices against its own account, so public Voice Library IDs aren’t usable until they’re added to the calling account. @darryncampbell’s in-dashboard voice explorer is the right path for now since it surfaces the LK-resolvable catalog. @CWilson’s already on it.

@williamBP

I tested with the voice you provided, KmnvDXRA0HU55Q0aqkPG

For me, it also does not work in agent builder.

However, when I test with the agent starter, uv run agent.py console, specifying the voice as follows, it DOES work:

        tts=inference.TTS(
            model="elevenlabs/eleven_flash_v2_5",
            voice="KmnvDXRA0HU55Q0aqkPG",
            language="en"
        ),

Then, all subsequent tries with agent builder DO work.
I believe something strange is going on with custom voices in Agent Builder, but I’ll need to do more testing to isolate exactly what is happening.

I took a closer look at the new voice explorer and it explicitly calls out “Each provider has a much larger selection of voices to choose from, which you can find in their documentation.”