Text to Dialogue continuity: 100-character context, 3 request IDs

ElevenLabs' Sept 28 changelog adds previous_text and future_text (100 chars max) and request-ID chaining (3 max). A Python limit check.

4 min readSume
All posts

For multi-speaker scenes rendered in several requests, ElevenLabs' September 28 changelog, read 2026-10-03, lets you pass previous_text and future_text of up to 100 characters each, and previous_request_ids and next_request_ids of up to 3 IDs each, so prosody stays continuous across segments. It also lists a use_pvc_as_ivc parameter. The checker below catches limit mistakes before the request goes out.

The parameters

These are the fields named in the changelog.

Text to Dialogue continuity fields (read 2026-10-03)
FieldLimitPurpose
previous_textmax 100 charactersContext before the segment
future_textmax 100 charactersContext after the segment
previous_request_idsmax 3 IDsEarlier requests for continuity
next_request_idsmax 3 IDsLater requests for continuity
use_pvc_as_ivcbooleanListed in the changelog entry

A payload checker

It truncates nothing and raises on a violation, so a bad payload fails in your code, not in a paid request. It runs with the standard library.

def check_continuity(payload: dict) -> dict:
    for key in ("previous_text", "future_text"):
        v = payload.get(key)
        if v is not None and len(v) > 100:
            raise ValueError(f"{key} is {len(v)} chars, max 100")
    for key in ("previous_request_ids", "next_request_ids"):
        v = payload.get(key)
        if v is not None and len(v) > 3:
            raise ValueError(f"{key} has {len(v)} ids, max 3")
    return payload

if __name__ == "__main__":
    ok = check_continuity({"previous_text": "Hello there.", "previous_request_ids": ["a", "b"]})
    print(ok)

Choosing context text

With a 100 character window, give the last sentence or two of the previous line, not the whole paragraph. If a segment starts mid-argument, the tail of the previous speaker's line is the most useful context.

Ordering matters

Render segments in script order and keep each response's request ID. Only pass IDs of requests that already exist. Segment 3 can name segments 1 and 2 in previous_request_ids; next_request_ids is only usable once the following segments have been rendered, for example when you re-take a middle line.

If you re-take a middle segment, later segments may no longer match it. Re-render the following one or two lines, then listen to the seam.

Without a continuity field

If a speech tool has no continuity parameter, render one line per file and join them. Sume's timeline audio concatenates 1-20 parts into one gapless file with sample-domain joins and no re-synthesis, so line boundaries do not add silence. Prosody continuity is a different thing from a clean join: a join cannot fix a line read in the wrong mood.

Keep line text and file ids in one manifest so a single re-take replaces one part and the concat reruns.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume