feat(elevenlabs): stream eleven_v3/eleven_v3_conversational via text-to-dialogue - #6838
Merged
tinalenguyen merged 14 commits intoAug 26, 2026
Merged
Conversation
ameyakhare
force-pushed
the
ameya/elevenlabs-v3-dialogue-support
branch
from
August 13, 2026 03:58
6d0b6e6 to
fa13eaa
Compare
ameyakhare
marked this pull request as ready for review
August 13, 2026 04:02
…ellation in aclose
|
Keen on getting this reviewed & merged! |
…s-v3-dialogue-support Carries the new inactive-context handling from livekit#6936 into _DialogueConnection._recv_loop (snake_case is_final, cleanup via _cleanup_context so the turn-drain bookkeeping is released too) and tags the dialogue loop's content-bearing log extras with lk.pii.data (livekit#6356).
… of waiting for turn drain The text-to-dialogue server now drains queued frames before close_context finalizes (previously it could discard frames queued behind the close, dropping the last turn's audio), so the client-side flush/turn-boundary bookkeeping and deferred close tasks are no longer needed.
… instead of exc_info
… instead of exc_info
chenghao-mou
left a comment
Member
There was a problem hiding this comment.
Thanks for the PR! Left some comments.
- read the documented alignment field instead of normalized_alignment (reserved/unused on text-to-dialogue) - send only the supported voice_settings field (stability) on the dialogue init packet and HTTP settings body, and warn about the dropped fields - send a per-context keep_alive when the outgoing queue is idle so open contexts survive the server's 20s inactivity finalize; keep-alives stop once close_context is sent for a context
The server's 20s inactivity timer is per context, so an idle context must get keep-alives even while other contexts on the connection have traffic. Track the last send time per context and emit due keep-alives from the send loop on both queue timeout and after each message.
Contributor
Author
|
Thanks for the first pass! Addressed comments |
…ue synthesize body
tinalenguyen
approved these changes
Aug 26, 2026
Member
|
@ameyakhare thank you for the pr!! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds streaming support for eleven_v3 / eleven_v3_conversational by routing them through ElevenLabs' text-to-dialogue API — the regular text-to-speech streaming websocket (multi-stream-input) rejects these models outright today, so SynthesizeStream currently fails for them.
Quickstart guide here
Websocket documentation here
Testing