You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When FluidAudio has to cut a sentence to fit the 50-token chunk limit, it often cuts between two words although better places are available, and a cut between words is heard as a pause in the middle of a phrase. In listening tests with a cloned voice, a cut at a comma could not be heard, because a speaker pauses there anyway, and a cut between words always could.
With ‖ marking the cuts, the sentence in the steps below is spoken as:
The humidity feels comfortable despite the approaching storm, ‖ and the air carries that distinctive electric charge that precedes rain — a mix of ozone and wet soil that makes everything feel fresh and alive before the first drops hit ‖ the pavement.
The second cut strands "the pavement." as a chunk of its own, although the sentence has a dash a few words earlier, where a speaker would pause.
Steps to reproduce
fluidaudiocli tts --backend pocket --voice alba --seed 42 -o pavement.wav --text "The humidity feels comfortable despite the approaching storm, and the air carries that distinctive electric charge that precedes rain — a mix of ozone and wet soil that makes everything feel fresh and alive before the first drops hit the pavement."
Sentences over 50 tokens are ordinary, so these cuts occur in most paragraphs. This is a small improvement that needs no model change, independent of the larger-cache request in #933.
Related
#931 (fix in #932) corrects the token counts that cut placement depends on. #584 (closed) changed how the pieces of a cut sentence are normalized and added a fix for a one-word tail.
Notes — by Claude Code
Written by Claude Code, an AI assistant working with the reporter. Checked against the chunker's output on b68f4847.
Why the sentence above is cut where it is.splitAtClauseBoundaries recognises only , ; :. The part after the comma is 53 tokens and contains no further comma, so it goes to splitAtWordBoundaries, which fills 48 tokens and leaves "the pavement." as a 5-token tail. The fix from PocketTTS text chunker produces audible artifacts on long French text (smart apostrophe + clause-cascade) #584 moves one word back when the tail is a single word; a two-word tail is not covered.
Runs of sentence punctuation are pulled apart.splitSentences ends a sentence at every ., ! or ?, so the input We waited for the results to come back from the lab... and then the whole building lost power, which nobody had planned for at all. Did it matter?! It did, because every sample in the freezer had to be moved across town before morning. reaches the model with the lab. . . and then and Did it matter? !. This happens only when the whole text is over 50 tokens, since shorter text is not split at all. No difference was heard in a listening test. feat(tts/pocket): cut oversized sentences at more kinds of punctuation and balance word splits #935 keeps such runs together so the text is passed through as written.
Summary
When FluidAudio has to cut a sentence to fit the 50-token chunk limit, it often cuts between two words although better places are available, and a cut between words is heard as a pause in the middle of a phrase. In listening tests with a cloned voice, a cut at a comma could not be heard, because a speaker pauses there anyway, and a cut between words always could.
With
‖marking the cuts, the sentence in the steps below is spoken as:The second cut strands "the pavement." as a chunk of its own, although the sentence has a dash a few words earlier, where a speaker would pause.
Steps to reproduce
Listen for the pause before "the pavement".
Environment
FluidAudio
main@b68f4847,FluidInference/pocket-tts-coremlv2.1 English. macOS 26.6.2, M4 Max.Why this matters
Sentences over 50 tokens are ordinary, so these cuts occur in most paragraphs. This is a small improvement that needs no model change, independent of the larger-cache request in #933.
Related
#931 (fix in #932) corrects the token counts that cut placement depends on. #584 (closed) changed how the pieces of a cut sentence are normalized and added a fix for a one-word tail.
Notes — by Claude Code
Written by Claude Code, an AI assistant working with the reporter. Checked against the chunker's output on
b68f4847.splitAtClauseBoundariesrecognises only, ; :. The part after the comma is 53 tokens and contains no further comma, so it goes tosplitAtWordBoundaries, which fills 48 tokens and leaves "the pavement." as a 5-token tail. The fix from PocketTTS text chunker produces audible artifacts on long French text (smart apostrophe + clause-cascade) #584 moves one word back when the tail is a single word; a two-word tail is not covered.splitSentencesends a sentence at every.,!or?, so the inputWe waited for the results to come back from the lab... and then the whole building lost power, which nobody had planned for at all. Did it matter?! It did, because every sample in the freezer had to be moved across town before morning.reaches the model withthe lab. . . and thenandDid it matter? !. This happens only when the whole text is over 50 tokens, since shorter text is not split at all. No difference was heard in a listening test. feat(tts/pocket): cut oversized sentences at more kinds of punctuation and balance word splits #935 keeps such runs together so the text is passed through as written.Clouds are gathering on the western ridge by late afternoon, their gray undersides promising scattered showers that could pass through quickly or linger longer depending on how the wind shifts overnight., which is cut at its comma, the model receivesClouds are gathering on the western ridge by late afternoon.as the first chunk: the comma is replaced by a full stop. PocketTTS text chunker produces audible artifacts on long French text (smart apostrophe + clause-cascade) #584 stopped this for the later pieces of a cut sentence, not for the first. Keeping the comma was a marginal improvement in a listening test, and it is not part of feat(tts/pocket): cut oversized sentences at more kinds of punctuation and balance word splits #935.