Skip to content

Turn Detector AssertionError When Inference Returns None #4514

@berk-karahan-crea

Description

@berk-karahan-crea

Bug Description

The MultilingualModel turn detector crashes with AssertionError when the inference executor returns None. This occurs intermittently during phone calls.

{
    "message": "Error predicting end of turn\nTraceback (most recent call last):\n  File \"/usr/local/lib/python3.12/site-packages/livekit/agents/voice/audio_recognition.py\", line 534, in _bounce_eou_task\n    end_of_turn_probability = await turn_detector.predict_end_of_turn(\n                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.12/site-packages/livekit/plugins/turn_detector/multilingual.py\", line 70, in predict_end_of_turn\n    return await super().predict_end_of_turn(chat_ctx, timeout=timeout)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.12/site-packages/livekit/plugins/turn_detector/base.py\", line 291, in predict_end_of_turn\n    assert result is not None, \"end_of_utterance prediction should always returns a result\"\n           ^^^^^^^^^^^^^^^^^^\nAssertionError: end_of_utterance prediction should always returns a result",
    "level": "ERROR",
    "name": "livekit.agents",
    "exc_info": "Traceback (most recent call last):\n  File \"/usr/local/lib/python3.12/site-packages/livekit/agents/voice/audio_recognition.py\", line 534, in _bounce_eou_task\n    end_of_turn_probability = await turn_detector.predict_end_of_turn(\n                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.12/site-packages/livekit/plugins/turn_detector/multilingual.py\", line 70, in predict_end_of_turn\n    return await super().predict_end_of_turn(chat_ctx, timeout=timeout)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.12/site-packages/livekit/plugins/turn_detector/base.py\", line 291, in predict_end_of_turn\n    assert result is not None, \"end_of_utterance prediction should always returns a result\"\n           ^^^^^^^^^^^^^^^^^^\nAssertionError: end_of_utterance prediction should always returns a result",
    "pid": 2494,
    "job_id": "AJ_sW93YCJzHpxy",
    "room_id": "RM_cwV85bgdKWFy",
    "timestamp": "2026-01-13T00:24:16.704656+00:00"
}

Expected Behavior

The turn detector should handle None inference results

Reproduction Steps

1. Use MultilingualModel() for turn detection in a voice agent
  2. Run the agent under normal phone call load
  3. Observe intermittent AssertionError in logs when inference times out or returns None

Operating System

Linux

Models Used

Turn Detection: MultilingualModel , VAD: livekit.plugins.silero.VAD, STT: Deepgram nova-3 , TTS: ElevenLabs eleven_flash_v2_5

Package Versions

livekit-agents==1.3.10
  livekit-plugins-turn-detector==1.3.10
  livekit-plugins-silero==1.3.10
  livekit-plugins-deepgram==1.3.10
  livekit-plugins-openai==1.3.10
  livekit-plugins-elevenlabs==1.3.10
  livekit==1.0.23

Session/Room/Call IDs

  • Room ID: RM_ZUbbQvVmMiVj

Proposed Solution

Additional Context

No response

Screenshots and Recordings

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions