1. StartConversationWithSelectedAgent: remove early return when WebSocket is already connected (persistent mode). Always call ServerJoinConversation so the pawn is added to NetConnectedPawns and bNetIsConversing is set. 2. ServerSendMicAudioFromPlayer: bypass speaker arbitration in standalone mode (<=1 connected pawn). Send audio directly to avoid silent drops caused by pawn not being in NetConnectedPawns array. Add warning logs for multi-player drops to aid debugging. 3. OnMicrophoneDataCaptured: restore direct WebSocketProxy->SendAudioChunk on the server path. This callback runs on the WASAPI audio thread — accessing game-thread state (NetConnectedPawns, LastSpeakTime) was causing undefined behavior. Internal mic is always the local player, no speaker arbitration needed. 4. StopListening flush: send directly to WebSocket (active speaker already established, no arbitration needed for the tail of the current turn). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Description
Eleven Labs Integration for Unreal Engine 5.5
Languages
C++
90%
Python
4.8%
HTML
4.3%
Batchfile
0.6%
C#
0.3%