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”
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 ![]()
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 ![]()
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.
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.”