fix(tts): pick earliest split for the first sentence, latest for the rest#3232
Draft
bradjshannon wants to merge 2 commits into
Draft
fix(tts): pick earliest split for the first sentence, latest for the rest#3232bradjshannon wants to merge 2 commits into
bradjshannon wants to merge 2 commits into
Conversation
…rest _get_segment_text used rfind for every sentence and kept the smallest of the last-occurrence positions across the punctuation set, an inconsistent heuristic. Differentiate by position in the reply: - First sentence: take the earliest punctuation boundary (find) so the first audio segment is produced as soon as possible — lower time-to-first-audio. - Subsequent sentences: take the latest boundary (rfind) so segments are as large as possible — fewer TTS calls and smoother playback. The tts_stop_request flush branch is unchanged.
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.
Problem
In
tts/base.py,_get_segment_textusedrfindfor every sentence and kept the smallest of the last-occurrence positions across the punctuation set — an inconsistent heuristic for choosing a split point.Fix
Differentiate by position in the reply:
find) so the first audio segment is produced as soon as possible — lower time-to-first-audio.rfind) so segments are as large as possible — fewer TTS calls and smoother playback.The
tts_stop_requestflush branch is unchanged.Tests
test/test_tts_segment_split.py— asserts the first sentence splits at the earliest boundary and later sentences at the latest (pinned viaprocessed_chars), plus the no-boundary case.Risk
Low — a correctness/latency improvement. The first-sentence-vs-rest trade-off (latency vs chunk size) is the one tuning dimension; happy to adjust if maintainers prefer different behavior.