fancy-kitchen-89125
02/14/2026, 7:38 AMtall-airline-16756
02/14/2026, 7:38 AMtall-airline-16756
02/14/2026, 7:38 AMfancy-kitchen-89125
02/14/2026, 8:06 AMtall-airline-16756
02/14/2026, 8:06 AMstreaming_latency (or equivalent timeout) from the default to a larger value for the problematic model.
1. Add retry logic around session.say() (handles transient retryable errors)
◦ Retry a few times with short backoff before failing. Many transient API issues are resolved by 1–2 quick retries.
1. Test different voice/model IDs and verify availability
◦ Confirm the exact voice and model IDs are valid and available for your account.
◦ Try a known-good default voice first, then switch to the custom voice to isolate whether the voice itself is the issue.
1. Run a minimal direct ElevenLabs call (isolate LiveKit plugin)
◦ If possible, make the same ElevenLabs TTS request directly (outside the LiveKit plugin) from your local machine to see if ElevenLabs returns audio or times out. This helps determine whether the failure is on ElevenLabs’ side or in the plugin/agent interaction.
1. Reduce network latency where possible
◦ If tests show timeouts are related to network delays, try running the agent closer to LiveKit Cloud (same region) or ensure your local connection has stable, low latency.
What to share next so I can dig deeper
• Exact voice_id and model names you used for the requests that timed out.
• The exact timeout/streaming_latency values configured (if you changed them).
• A short example of the text that triggers the no audio frames error (you already shared one; if you can try an even shorter sentence that fails, include it).
• Any plugin/agent logs immediately before the error (a few lines above the exception). That helps confirm whether the request was sent and whether ElevenLabs responded at all.
If you prefer, try this quick checklist first:
• Send a 3–5 word text with the default voice (confirm success).
• If success, try the same short text with the custom voice/model.
• If custom voice times out, increase streaming latency and retry.
• Add a retry wrapper of 2 retries with 1s backoff and test again.
I can provide exact code snippets for increasing latency, adding retries, or making a direct ElevenLabs request if you tell me:
• which SDK/language you’re using for the agent (Python, Node, etc.), and
• the voice_id and model you want to test. Sources: Pipeline nodes and hooks | LiveKit Documentation | examples/voice_agents | livekit/livekit_composite | DeepWiki | OpenAI and LiveKit partner to turn Advanced Voice into an API | Troubleshooting STT not picking up utterances | LiveKit | ElevenLabs TTS plugin guide | LiveKit Documentationfancy-kitchen-89125
02/14/2026, 8:20 AMtall-airline-16756
02/14/2026, 8:20 AMno audio frames were pushed for text (agent never received frames), or
◦ Request timeout (agent gave up waiting for audio).
• The agent adds extra network/timeout constraints compared with a single direct SDK call.
Targeted checks and fixes to try next
1. Confirm plugin uses the same request parameters
◦ Verify the voice_id, model_id, and output_format the LiveKit plugin is configured with exactly match your working direct call (E10xF3pTvG3ixlf2xSgr, eleven_multilingual_v2,mp3_44100_128).
◦ Small mismatches (different model name or unsupported output format) can change plugin behavior.
1. Increase agent/plugin timeouts / streaming latency
◦ The agent may use a shorter timeout than your direct SDK call. Increase the plugin’s streaming timeout or streaming_latency (or equivalent) so it waits longer for the first audio chunk.
◦ If you tell me which language/SDK you run the agent in (Python or Node), I can provide the exact setting and snippet to change.
1. Force small test payloads through the agent
◦ Even though your direct test used a short sentence, explicitly try a 3–5 word test phrase via the LiveKit agent to confirm whether any audio frames come through at all.
◦ If a very short phrase succeeds in the agent, then the issue is latency or chunking for longer/normal messages.
1. Capture and share plugin-level logs
◦ Look for the agent logs around the TTS call: lines showing the request being sent to ElevenLabs, first response bytes, or any error returned by the plugin’s HTTP client.
◦ Useful snippets: the HTTP response code and whether any body was returned, plus timestamps to see how long ElevenLabs took to respond.
1. Validate how the plugin consumes streamed audio
◦ Confirm the plugin expects raw PCM frames vs. encoded MP3/Opus. If the plugin expects stream of raw audio frames but the ElevenLabs call returns MP3 bytes, there may be an implicit transcoding/streaming mismatch.
◦ If the plugin has a config option for output_format or encoding, set it to the format the plugin expects.
1. Add retry and a small initial wait before streaming to agent
◦ Add a short pre-wait (100–300ms) or small retries for the first chunk in the agent plugin path—this can give ElevenLabs the small extra time it needs to produce initial audio frames.
◦ Implement a retry wrapper around the plugin call with 2 quick retries and a 1s backoff.
1. Test an inline minimal ElevenLabs HTTP request from the same host the agent runs on
◦ Run the same direct sample you provided from the exact environment the agent runs in (if different from your dev laptop). That confirms there are no network/proxy differences when the agent invokes ElevenLabs.
What I can do next for you
• If you share:
◦ which LiveKit Agents SDK/language you’re using (Python or Node),
◦ the LiveKit plugin TTS config (voice_id, model, any timeout or streaming config),
◦ a short excerpt of the agent logs around the failing TTS call (a few lines before and after the exception),
I will provide:
• exact config snippets to increase streaming latency/timeouts,
• a small retry wrapper snippet tailored to your SDK,
• a check-list to ensure encoding/format compatibility between ElevenLabs response and the plugin’s expected input.
If you prefer, start by running this quick experiment and tell me results
• In the same environment where the agent runs, run your working ElevenLabs snippet (the one you shared).
• Then immediately run a 3–5 word TTS via the LiveKit agent.
• Share the agent log lines and the timestamps for both actions. This will let me determine whether ElevenLabs is responding slower to agent-originated requests or the plugin is dropping frames.
You’re close — because direct calls work we can focus on the agent’s timeout/format/streaming behavior. Tell me the SDK (Python/Node) and paste the agent TTS config/log snippet and I’ll give exact code changes to try.fancy-kitchen-89125
02/14/2026, 8:51 AMtall-airline-16756
02/14/2026, 8:52 AMno audio frames were pushed for text and then retrying. Because your direct ElevenLabs SDK call works, the problem is almost certainly in how the LiveKit agent/plugin is calling or waiting for ElevenLabs audio (timeout/streaming/chunking or format mismatch). Let’s focus on targeted steps you can try now and a few quick checks I need to narrow it down.
What to try now (priority order)
1. Send a very short test phrase through the agent
◦ Use a 2–5 word phrase like "Hello, this is a test."
◦ If that succeeds in the agent, the problem is likely latency/streaming for longer text. If it fails, it points to a format or config mismatch.
1. Increase the agent/plugin streaming timeout/latency
◦ The agent is likely giving up before the first audio frame arrives. Increase whatever streaming_latency or TTS timeout the plugin exposes (even a small bump helps).
◦ If you tell me whether your agent is Python or Node I’ll give the exact snippet to change.
1. Break long text into short chunks before calling the agent
◦ Split a sentence into 1–2 shorter sentences and call session.say() (or equivalent) for each piece. This reduces time to first audio frame.
1. Add a short pre-wait or retry for the first audio chunk
◦ Add a tiny delay (100–300 ms) after the TTS request before expecting frames, or add a retry loop that retries the TTS call once after a 1s backoff.
1. Verify output encoding/format expected by the plugin
◦ Confirm whether the plugin expects raw PCM frames or encoded MP3/Opus and make sure your ElevenLabs output_format matches. A mismatch can make the agent see zero frames even when bytes are returned.
1. Run the exact direct ElevenLabs snippet from the same host the agent runs on
◦ You mentioned running the direct snippet locally; run the same snippet from the exact environment where the LiveKit agent runs (same machine/container). If it succeeds there but agent still fails, it confirms agent-side handling is the problem.
What I need from you to give exact code/config fixes
• Which agent SDK/language are you using? (Python or Node)
• The plugin/agent TTS config you’re using (voice_id, model_id, any timeout or streaming_latency value)
• A short agent log excerpt showing timestamps for:
◦ when the agent sends the request to ElevenLabs
◦ any HTTP response status (if present) or the time gap until the exception
• The exact short test phrase you tried that failed (you shared one; if you can also try an even shorter one please include results)
If you want immediate changes, tell me your SDK (Python/Node). I’ll provide:
• The exact code/config lines to increase streaming latency or timeout.
• A small retry wrapper and a chunking example to split long text.
• A quick check to detect whether the plugin is receiving MP3/PCM and how to adjust the plugin config.
You’re very close — because direct SDK calls work we can fix this by widening the agent’s wait window or matching the audio format. Tell me the SDK and paste your TTS config and a few log lines and I’ll give exact snippets to apply.