New to the runtime? Start with BYO ASR / LLM / TTS for the full cascade config file — this page is the ElevenLabs-specific slice of it.
Use ElevenLabs for text-to-speech
This is the common case: keep your speech-to-text and language model, and let ElevenLabs speak the replies.Set the TTS stage in agent-config.yml
Set
tts_provider: elevenlabs and put your ElevenLabs voice_id in tts_voice. Because ElevenLabs is the default, you can even omit tts_provider — but naming it keeps the config explicit.agent-config.yml
Add your ElevenLabs key
Provider keys are per-tenant. Set
ELEVENLABS_API_KEY in the TeleQuick console at agent.telequick.dev — it is sealed at rest and injected at call setup, never baked into the config file. See Credentials.Save and place a test call
Config is hydrated from the control plane with no rebuild. Place a call and check the latency breakdown — the TTS row shows time-to-first-audio for the ElevenLabs stage.
How it streams
The ElevenLabs TTS session opens a streaming connection (/stream-input), so audio begins flowing as the language model’s text arrives rather than after the whole sentence is generated — that is what keeps first-audio low. The default model is a low-latency turbo model; the synthesizer requests linear PCM, which the runtime resamples into its 8 kHz PCM16 call bus for you.
If a streaming session can’t open — a missing voice or a bad key — the runtime falls back to a one-shot HTTP synthesis for that turn so the caller still hears a reply instead of silence. Confirm the voice id and key up front so you stay on the streaming path.
Use ElevenLabs for speech-to-text
The same ElevenLabs key also powers a streaming speech-to-text stage. Setasr_provider: elevenlabs to transcribe with ElevenLabs instead of the default:
agent-config.yml
Deepgram is the recommended default transcriber for English telephony (see Deepgram). Reach for ElevenLabs ASR when you want a single vendor and key across both the listening and speaking stages.
Use ElevenLabs Conversational AI
ElevenLabs Conversational AI (ConvAI) is a full duplex agent — ElevenLabs owns transcription, the language model, and the voice on one bidirectional connection, and the runtime bridges the call audio to it. Configure it as a singleREALTIME node, the same way as the other speech-to-speech providers:
agent-config.yml
Your ElevenLabs Conversational AI agent id. This is mandatory — ConvAI dials a specific pre-built ElevenLabs agent, not a bare model name.
Overrides the voice configured on the ElevenLabs agent. Leave empty to use the agent’s own voice.
Overrides the agent’s system prompt for this call. Leave empty to use the prompt set in ElevenLabs.
Public vs. private agents. A public ElevenLabs agent connects without an API key. A private agent needs
ELEVENLABS_API_KEY in the tenant’s credentials.Credentials
One key covers all three surfaces (TTS, ASR, ConvAI). Set it in the TeleQuick console atagent.telequick.dev; it is resolved from the control plane at call setup and sealed at rest.
For single-tenant or local development, the runtime also reads the key from the environment as a fallback:
Next steps
Full cascade config
Wire ElevenLabs TTS alongside your chosen ASR and LLM in one config file.
Speech-to-speech
Run ConvAI or another duplex model as a single REALTIME node.
Turn detection
Tune barge-in and backchannel handling around the ElevenLabs voice.
Latency breakdown
See TTS time-to-first-audio on a live call.