ElevenLabs STT & TTS plugin both broken on LiveKit Agents v1.4.4

,

Hi everyone,

I’ve been experiencing persistent failures with the ElevenLabs plugin, both STT and TTS . I’ve reached out to ElevenLabs support and they’ve indicated this is a known issue on the LiveKit side. I wanted to see if others are hitting the same problems and whether a fix is in progress.

Environment:

  • LiveKit Agents: v1.4.4

  • Python: 3.13

  • Plugin: livekit.plugins.elevenlabs

My ElevenLabs Configuration:

STT:

python

elevenlabs_stt = elevenlabs.STT(
    model_id="scribe_v2_realtime",
    language_code="en",
    server_vad=VADOptions(
        vad_silence_threshold_secs=1.5,  
        vad_threshold=0.4,  
        min_speech_duration_ms=100,  
        min_silence_duration_ms=100,  
    ),
)

TTS:

python

elevenlabs_tts = elevenlabs.TTS(
    voice_id="cgSgspJ2msm6clMCkdW9",
    model="eleven_multilingual_v2"
)

Issue 1 — STT: Connection closed unexpectedly

livekit.agents._exceptions.APIStatusError: ElevenLabs STT connection closed unexpectedly

At elevenlabs/stt.py, line 421 — the websocket connection drops mid-stream during recv_task.

Issue 2 — STT: Bogus quota_exceeded error

livekit.agents._exceptions.APIConnectionError: quota_exceeded: Unknown error

At elevenlabs/stt.py, line 622 — this fires even though my ElevenLabs quota is not actually exceeded. Seems like a misleading error being surfaced by the plugin.

Issue 3 — TTS: No audio frames pushed

livekit.agents._exceptions.APIError: no audio frames were pushed for text: [some text]

At tts.py, line 466 — the TTS stream completes but returns zero audio frames, causing livekit.plugins.elevenlabs.tts.TTS recovery failed in the fallback adapter.

Note: I’ve tested alternative STT and TTS providers and they work fine with the same setup, Deepgram Nova 3 for STT and Cartesia Sonic 3 for TTS both function correctly, which further points to the issue being specific to the ElevenLabs plugin.

Has anyone found a workaround? Is there a fix being tracked for this?

Thank you!

Here is the console log:

19:07:42.827 INFO livekit.agents received job request

{“job_id”: “AJ_XXXXXXXXXXXXX”, “dispatch_id”: “AD_XXXXXXXXXXXXX”, “room”: “call-_+1XXXXXXXXXX_XXXXXXXXXXX”, “room_id”: “RM_XXXXXXXXXXXXX”, “agent_name”: “abc-agent”, “resuming”:

false, “enable_recording”: false}

19:07:42.885 DEBUG livekit.agents received assignment

{“agent_name”: “abc-agent”, “room_id”: “RM_XXXXXXXXXXXXX”, “room”: “call-_+1XXXXXXXXXX_XXXXXXXXXXX”, “job_id”: “AJ_XXXXXXXXXXXXX”, “dispatch_id”: “AD_XXXXXXXXXXXXX”,

“enable_recording”: false}

19:07:42.889 WARNI… livekit.agents no warmed process available for job, waiting for one to be created {“job_id”: “AJ_XXXXXXXXXXXXX”}

19:07:42.912 INFO livekit.agents initializing process {“pid”: 1953}

19:07:45.616 INFO livekit.agents process initialized {“pid”: 1953, “elapsed_time”: 2.7}

19:07:45.615 DEBUG asyncio Using selector: KqueueSelector {“pid”: 1953}

19:07:46.567 DEBUG urllib3.util.retry Converted retries value: 3 → Retry(total=3, connect=None, read=None, redirect=None, status=None) {“pid”: 1953, “job_id”: “AJ_XXXXXXXXXXXXX”, “room_id”: “RM_XXXXXXXXXXXXX”}

19:07:47.854 DEBUG livekit.agents input stream attached

{“participant”: null, “source”: “SOURCE_UNKNOWN”, “accepted_sources”: [“SOURCE_MICROPHONE”], “pid”: 1953, “job_id”: “AJ_XXXXXXXXXXXXX”, “room_id”: “RM_XXXXXXXXXXXXX”}

19:07:47.857 INFO abc-agent entering task Greeter {“pid”: 1953, “job_id”: “AJ_XXXXXXXXXXXXX”, “room_id”: “RM_XXXXXXXXXXXXX”}

DEBUG livekit.agents http_session(): creating a new httpclient ctx {“pid”: 1953, “job_id”: “AJ_XXXXXXXXXXXXX”, “room_id”: “RM_XXXXXXXXXXXXX”}

19:07:47.952 DEBUG livekit.agents start reading stream {“participant”: “sip_+1XXXXXXXXXX”, “source”: “SOURCE_MICROPHONE”, “pid”: 1953, “job_id”: “AJ_XXXXXXXXXXXXX”, “room_id”: “RM_XXXXXXXXXXXXX”}

DEBUG livekit.agents using audio io: `RoomIO` → `AgentSession` → `TranscriptSynchronizer` → `RoomIO` {“pid”: 1953, “job_id”: “AJ_XXXXXXXXXXXXX”, “room_id”: “RM_XXXXXXXXXXXXX”}

DEBUG livekit.agents using transcript io: `AgentSession` → `TranscriptSynchronizer` → `RoomIO` {“pid”: 1953, “job_id”: “AJ_XXXXXXXXXXXXX”, “room_id”: “RM_XXXXXXXXXXXXX”}

state change from listening to thinking

19:07:48.153 DEBUG livekit.…levenlabs Session started with ID: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX {“pid”: 1953, “job_id”: “AJ_XXXXXXXXXXXXX”, “room_id”: “RM_XXXXXXXXXXXXX”}

[DEBUG] LLM watchdog cancelled (response received).

[DEBUG] Thinking timer cancelled (state changed).

19:07:49.792 WARNI… livekit.agents failed to synthesize speech: no audio frames were pushed for text: Thank you for calling [REDACTED]. I’m [REDACTED], an AI assistant, retrying in 0.1s

{“tts”: “livekit.plugins.elevenlabs.tts.TTS”, “attempt”: 1, “streamed”: true, “pid”: 1953, “job_id”: “AJ_XXXXXXXXXXXXX”, “room_id”: “RM_XXXXXXXXXXXXX”}

19:07:49.949 WARNI… livekit.agents failed to synthesize speech: no audio frames were pushed for text: Thank you for calling [REDACTED]. I’m [REDACTED], an AI assistant. Please note this call may be recorded for quality

and training purposes. How can I assist you?, retrying in 2.0s

{“tts”: “livekit.plugins.elevenlabs.tts.TTS”, “attempt”: 2, “streamed”: true, “pid”: 1953, “job_id”: “AJ_XXXXXXXXXXXXX”, “room_id”: “RM_XXXXXXXXXXXXX”}

19:07:50.619 WARNI… livekit.agents process memory usage is high {“memory_usage_mb”: 547.625, “memory_warn_mb”: 500, “memory_limit_mb”: 0, “pid”: 1953, “job_id”: “AJ_XXXXXXXXXXXXX”, “room_id”: “RM_XXXXXXXXXXXXX”}

19:07:51.997 ERROR livekit.agents livekit.plugins.elevenlabs.tts.TTS error, switching to next TTS

Traceback (most recent call last):

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/agents/tts/tts.py”, line 631, in _anext_

val = await self._event_aiter._anext_()

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

StopAsyncIteration

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/agents/tts/fallback_adapter.py”, line 315, in _try_synthesize

async for audio in stream:

yield audio

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/agents/tts/tts.py”, line 634, in _anext_

raise exc # noqa: B904

^^^^^^^^^

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/agents/tts/tts.py”, line 421, in _traceable_main_task

await self._main_task()

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/agents/tts/tts.py”, line 466, in _main_task

raise APIError(f"no audio frames were pushed for text: {self._pushed_text}")

livekit.agents._exceptions.APIError: no audio frames were pushed for text: Thank you for calling [REDACTED]. I’m [REDACTED], an AI assistant. Please note this call may be recorded for

quality and training purposes. How can I assist you?

{“streamed”: true, “pid”: 1953, “job_id”: “AJ_XXXXXXXXXXXXX”, “room_id”: “RM_XXXXXXXXXXXXX”}

Traceback (most recent call last):

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/agents/tts/tts.py”, line 631, in _anext_

val = await self._event_aiter._anext_()

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

StopAsyncIteration

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/agents/tts/fallback_adapter.py”, line 315, in _try_synthesize

async for audio in stream:

yield audio

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/agents/tts/tts.py”, line 634, in _anext_

raise exc # noqa: B904

^^^^^^^^^

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/agents/tts/tts.py”, line 421, in _traceable_main_task

await self._main_task()

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/agents/tts/tts.py”, line 466, in _main_task

raise APIError(f"no audio frames were pushed for text: {self._pushed_text}")

livekit.agents._exceptions.APIError: no audio frames were pushed for text: Thank you for calling [REDACTED]. I’m [REDACTED], an AI assistant. Please note this call may be recorded for quality and training purposes. How can I assist you?

19:07:52.063 WARNI… livekit.agents livekit.plugins.elevenlabs.tts.TTS recovery failed

Traceback (most recent call last):

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/agents/tts/tts.py”, line 631, in _anext_

val = await self._event_aiter._anext_()

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

StopAsyncIteration

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/agents/tts/fallback_adapter.py”, line 315, in _try_synthesize

async for audio in stream:

yield audio

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/agents/tts/tts.py”, line 634, in _anext_

raise exc # noqa: B904

^^^^^^^^^

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/agents/tts/tts.py”, line 421, in _traceable_main_task

await self._main_task()

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/agents/tts/tts.py”, line 466, in _main_task

raise APIError(f"no audio frames were pushed for text: {self._pushed_text}")

livekit.agents._exceptions.APIError: no audio frames were pushed for text: Thank you for calling [REDACTED]. I’m [REDACTED], an AI assistant. Please note this call may be recorded for

quality and training purposes. How can I assist you?

{“streamed”: true, “pid”: 1953, “job_id”: “AJ_XXXXXXXXXXXXX”, “room_id”: “RM_XXXXXXXXXXXXX”}

Traceback (most recent call last):

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/agents/tts/tts.py”, line 631, in _anext_

val = await self._event_aiter._anext_()

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

StopAsyncIteration

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/agents/tts/fallback_adapter.py”, line 315, in _try_synthesize

async for audio in stream:

yield audio

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/agents/tts/tts.py”, line 634, in _anext_

raise exc # noqa: B904

^^^^^^^^^

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/agents/tts/tts.py”, line 421, in _traceable_main_task

await self._main_task()

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/agents/tts/tts.py”, line 466, in _main_task

raise APIError(f"no audio frames were pushed for text: {self._pushed_text}")

livekit.agents._exceptions.APIError: no audio frames were pushed for text: Thank you for calling [REDACTED]. I’m [REDACTED], an AI assistant. Please note this call may be recorded for quality and training purposes. How can I assist you?

19:07:52.189 DEBUG livekit.….cartesia Established new Cartesia TTS WebSocket connection

{“cartesia_request_id”: “XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX”, “pid”: 1953, “job_id”: “AJ_XXXXXXXXXXXXX”, “room_id”: “RM_XXXXXXXXXXXXX”}

state change from thinking to speaking

[DEBUG] Agent is speaking. Timers cleared.

19:07:52.522 DEBUG livekit.agents aec warmup active, disabling interruptions for 3.00s {“pid”: 1953, “job_id”: “AJ_XXXXXXXXXXXXX”, “room_id”: “RM_XXXXXXXXXXXXX”}

19:07:55.524 DEBUG livekit.agents aec warmup expired, re-enabling interruptions {“pid”: 1953, “job_id”: “AJ_XXXXXXXXXXXXX”, “room_id”: “RM_XXXXXXXXXXXXX”}

19:07:55.626 WARNI… livekit.agents process memory usage is high {“memory_usage_mb”: 552.734375, “memory_warn_mb”: 500, “memory_limit_mb”: 0, “pid”: 1953, “job_id”: “AJ_XXXXXXXXXXXXX”, “room_id”: “RM_XXXXXXXXXXXXX”}

19:08:00.631 WARNI… livekit.agents process memory usage is high {“memory_usage_mb”: 552.796875, “memory_warn_mb”: 500, “memory_limit_mb”: 0, “pid”: 1953, “job_id”: “AJ_XXXXXXXXXXXXX”, “room_id”: “RM_XXXXXXXXXXXXX”}

19:08:01.044 ERROR livekit.…levenlabs ElevenLabs STT error [quota_exceeded]: Unknown error {“pid”: 1953, “job_id”: “AJ_XXXXXXXXXXXXX”, “room_id”: “RM_XXXXXXXXXXXXX”}

ERROR livekit.…levenlabs failed to process ElevenLabs STT message

Traceback (most recent call last):

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/plugins/elevenlabs/stt.py”, line 433, in recv_task

self._process_stream_event(parsed)

~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/plugins/elevenlabs/stt.py”, line 622, in _process_stream_event

raise APIConnectionError(f"{message_type}: {error_msg}{details_suffix}")

livekit.agents._exceptions.APIConnectionError: quota_exceeded: Unknown error

{“pid”: 1953, “job_id”: “AJ_XXXXXXXXXXXXX”, “room_id”: “RM_XXXXXXXXXXXXX”}

Traceback (most recent call last):

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/plugins/elevenlabs/stt.py”, line 433, in recv_task

self._process_stream_event(parsed)

~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/plugins/elevenlabs/stt.py”, line 622, in _process_stream_event

raise APIConnectionError(f"{message_type}: {error_msg}{details_suffix}")

livekit.agents._exceptions.APIConnectionError: quota_exceeded: Unknown error

19:08:01.047 ERROR livekit.…levenlabs Error in recv_task

Traceback (most recent call last):

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/agents/utils/log.py”, line 17, in async_fn_logs

return await fn(*args, **kwargs)

^^^^^^^^^^^^^^^^^^^^^^^^^

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/plugins/elevenlabs/stt.py”, line 421, in recv_task

raise APIStatusError(

…<3 lines>…

)

livekit.agents._exceptions.APIStatusError: ElevenLabs STT connection closed unexpectedly

{“pid”: 1953, “job_id”: “AJ_XXXXXXXXXXXXX”, “room_id”: “RM_XXXXXXXXXXXXX”}

Traceback (most recent call last):

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/agents/utils/log.py”, line 17, in async_fn_logs

return await fn(*args, **kwargs)

^^^^^^^^^^^^^^^^^^^^^^^^^

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/plugins/elevenlabs/stt.py”, line 421, in recv_task

raise APIStatusError(

…<3 lines>…

)

livekit.agents._exceptions.APIStatusError: ElevenLabs STT connection closed unexpectedly

19:08:01.048 WARNI… livekit.agents failed to recognize speech: ElevenLabs STT connection closed unexpectedly, retrying in 0.1s

{“stt”: “livekit.plugins.elevenlabs.stt.STT”, “attempt”: 0, “streamed”: true, “pid”: 1953, “job_id”: “AJ_XXXXXXXXXXXXX”, “room_id”: “RM_XXXXXXXXXXXXX”}

19:08:01.293 DEBUG livekit.…levenlabs Session started with ID: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX {“pid”: 1953, “job_id”: “AJ_XXXXXXXXXXXXX”, “room_id”: “RM_XXXXXXXXXXXXX”}

state change from speaking to listening

19:08:05.635 WARNI… livekit.agents process memory usage is high {“memory_usage_mb”: 552.875, “memory_warn_mb”: 500, “memory_limit_mb”: 0, “pid”: 1953, “job_id”: “AJ_XXXXXXXXXXXXX”, “room_id”: “RM_XXXXXXXXXXXXX”}

^C 19:08:10.398 INFO livekit.agents shutting down worker {“id”: “AW_XXXXXXXXXXXXX”}

19:08:10.400 DEBUG livekit.agents input stream detached

{“participant”: “sip_+1XXXXXXXXXX”, “source”: “SOURCE_MICROPHONE”, “accepted_sources”: [“SOURCE_MICROPHONE”], “pid”: 1953, “job_id”: “AJ_XXXXXXXXXXXXX”, “room_id”: “RM_XXXXXXXXXXXXX”}

19:08:10.453 ERROR livekit.…levenlabs ElevenLabs STT error [quota_exceeded]: Unknown error {“pid”: 1953, “job_id”: “AJ_XXXXXXXXXXXXX”, “room_id”: “RM_XXXXXXXXXXXXX”}

ERROR livekit.…levenlabs failed to process ElevenLabs STT message

Traceback (most recent call last):

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/plugins/elevenlabs/stt.py”, line 433, in recv_task

self._process_stream_event(parsed)

~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/plugins/elevenlabs/stt.py”, line 622, in _process_stream_event

raise APIConnectionError(f"{message_type}: {error_msg}{details_suffix}")

livekit.agents._exceptions.APIConnectionError: quota_exceeded: Unknown error

{“pid”: 1953, “job_id”: “AJ_XXXXXXXXXXXXX”, “room_id”: “RM_XXXXXXXXXXXXX”}

Traceback (most recent call last):

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/plugins/elevenlabs/stt.py”, line 433, in recv_task

self._process_stream_event(parsed)

~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/plugins/elevenlabs/stt.py”, line 622, in _process_stream_event

raise APIConnectionError(f"{message_type}: {error_msg}{details_suffix}")

livekit.agents._exceptions.APIConnectionError: quota_exceeded: Unknown error

ERROR livekit.…levenlabs Error in recv_task

Traceback (most recent call last):

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/agents/utils/log.py”, line 17, in async_fn_logs

return await fn(*args, **kwargs)

^^^^^^^^^^^^^^^^^^^^^^^^^

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/plugins/elevenlabs/stt.py”, line 421, in recv_task

raise APIStatusError(

…<3 lines>…

)

livekit.agents._exceptions.APIStatusError: ElevenLabs STT connection closed unexpectedly

{“pid”: 1953, “job_id”: “AJ_XXXXXXXXXXXXX”, “room_id”: “RM_XXXXXXXXXXXXX”}

Traceback (most recent call last):

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/agents/utils/log.py”, line 17, in async_fn_logs

return await fn(*args, **kwargs)

^^^^^^^^^^^^^^^^^^^^^^^^^

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/plugins/elevenlabs/stt.py”, line 421, in recv_task

raise APIStatusError(

…<3 lines>…

)

livekit.agents._exceptions.APIStatusError: ElevenLabs STT connection closed unexpectedly

19:08:10.458 WARNI… livekit.agents livekit.plugins.elevenlabs.stt.STT failed, switching to next STT

Traceback (most recent call last):

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/agents/stt/stt.py”, line 322, in _main_task

return await self._run()

^^^^^^^^^^^^^^^^^

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/plugins/elevenlabs/stt.py”, line 458, in _run

task.result()

~~~~~~~~~~~^^

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/agents/utils/log.py”, line 17, in async_fn_logs

return await fn(*args, **kwargs)

^^^^^^^^^^^^^^^^^^^^^^^^^

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/plugins/elevenlabs/stt.py”, line 421, in recv_task

raise APIStatusError(

…<3 lines>…

)

livekit.agents._exceptions.APIStatusError: ElevenLabs STT connection closed unexpectedly

The above exception was the direct cause of the following exception:

Traceback (most recent call last):

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/agents/stt/fallback_adapter.py”, line 338, in _run

async for ev in main_stream:

self._event_ch.send_nowait(ev)

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/agents/stt/stt.py”, line 445, in _anext_

raise exc # noqa: B904

^^^^^^^^^

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/agents/stt/stt.py”, line 329, in _main_task

raise APIConnectionError(

f"failed to recognize speech after {self._num_retries} attempts",

) from e

livekit.agents._exceptions.APIConnectionError: failed to recognize speech after 1 attempts

{“streamed”: true, “pid”: 1953, “job_id”: “AJ_XXXXXXXXXXXXX”, “room_id”: “RM_XXXXXXXXXXXXX”}

Traceback (most recent call last):

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/agents/stt/stt.py”, line 322, in _main_task

return await self._run()

^^^^^^^^^^^^^^^^^

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/plugins/elevenlabs/stt.py”, line 458, in _run

task.result()

~~~~~~~~~~~^^

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/agents/utils/log.py”, line 17, in async_fn_logs

return await fn(*args, **kwargs)

^^^^^^^^^^^^^^^^^^^^^^^^^

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/plugins/elevenlabs/stt.py”, line 421, in recv_task

raise APIStatusError(

…<3 lines>…

)

livekit.agents._exceptions.APIStatusError: ElevenLabs STT connection closed unexpectedly

The above exception was the direct cause of the following exception:

Traceback (most recent call last):

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/agents/stt/fallback_adapter.py”, line 338, in _run

async for ev in main_stream:

self._event_ch.send_nowait(ev)

File “/Users///myVoiceAgent/venv/lib/python3.13/site-packages/livekit/agents/stt/stt.py”, line 445, in _anext_

raise exc # noqa: B904

^^^^^^^^^

ElevenLabs STT & TTS plugin both broken on LiveKit Agents v1.4.4

Are you saying it works fine if you revert back to v1.4.3?

What is the “they’ve indicated this is a known issue on the LiveKit side”? I searched for a quota “known” issue here and did not find any related ticket

Looking at your logs this is a pretty clear-cut issue, it’s not a LiveKit problem, it’s an ElevenLabs quota problem. Here’s what the logs show:

The core issue: Their ElevenLabs account has hit its quota limit. Both TTS and STT from ElevenLabs are failing:

  • TTS failure: no audio frames were pushed for text — ElevenLabs TTS returns no audio. It retries twice, fails both times, then the fallback adapter switches to Cartesia TTS (which works fine — Established new Cartesia TTS WebSocket connection).

  • STT failure: ElevenLabs STT error [quota_exceeded]: Unknown error — this is explicit. ElevenLabs is rejecting STT requests because the account is over quota. code

The secondary concern: Memory usage warnings (552 MB, warn threshold at 500 MB) — worth noting but not the cause of the failures.

Not sure why they would not have told you that you were over your quota. Also, not sure why they would send an over quota error if your account is not actually over quota.

I’ve seen others hit an error like this before and they deleted the API key in the ElevenLabs portal, recreated and then things magically start working again.

Thank you CWilson for looking into this. Turns out the issue was my ElevenLabs API character limit was set to just 50 characters per month. I had mistakenly thought it was a $50 spending cap. Once I bumped it up to 10,000 characters, everything started working perfectly.

1 Like