feat(desktop): add pitch-preserving TTS playback speed - #3194
Draft
johnmatthewtennant wants to merge 27 commits into
Draft
feat(desktop): add pitch-preserving TTS playback speed#3194johnmatthewtennant wants to merge 27 commits into
johnmatthewtennant wants to merge 27 commits into
Conversation
johnmatthewtennant
added a commit
that referenced
this pull request
Jul 27, 2026
Contributor
Author
johnmatthewtennant
marked this pull request as ready for review
July 27, 2026 19:47
johnmatthewtennant
marked this pull request as draft
July 27, 2026 19:53
Signed-off-by: John Tennant <jtennant@squareup.com>
johnmatthewtennant
force-pushed
the
jtennant/tts-playback-speed
branch
from
July 28, 2026 00:45
f62db77 to
8de8b63
Compare
johnmatthewtennant
changed the base branch from
main
to
jtennant/pocket-tts-settings-v1
July 28, 2026 00:45
johnmatthewtennant
added a commit
that referenced
this pull request
Jul 28, 2026
Contributor
Author
johnmatthewtennant
force-pushed
the
jtennant/tts-playback-speed
branch
from
July 28, 2026 02:10
5a78f33 to
6fca35f
Compare
Signed-off-by: John Tennant <jtennant@squareup.com>
Signed-off-by: John Tennant <johnmatthewtennant@gmail.com> Signed-off-by: John Tennant <jtennant@block.xyz> Signed-off-by: John Tennant <jtennant@squareup.com>
Signed-off-by: John Tennant <jtennant@squareup.com>
Signed-off-by: John Tennant <jtennant@squareup.com>
Signed-off-by: John Tennant <jtennant@squareup.com>
Signed-off-by: John Tennant <jtennant@squareup.com>
Signed-off-by: John Tennant <jtennant@squareup.com>
Signed-off-by: John Tennant <jtennant@squareup.com>
Signed-off-by: John Tennant <jtennant@squareup.com>
Signed-off-by: John Tennant <jtennant@squareup.com>
johnmatthewtennant
force-pushed
the
jtennant/pocket-tts-settings-v1
branch
from
July 28, 2026 04:48
4891a92 to
c118f5a
Compare
Signed-off-by: John Tennant <jtennant@squareup.com>
Signed-off-by: John Tennant <jtennant@squareup.com>
Signed-off-by: John Tennant <jtennant@squareup.com>
Signed-off-by: John Tennant <jtennant@squareup.com>
Signed-off-by: John Tennant <jtennant@squareup.com>
Signed-off-by: John Tennant <jtennant@squareup.com>
Signed-off-by: John Tennant <jtennant@squareup.com>
Signed-off-by: John Tennant <jtennant@squareup.com>
Signed-off-by: John Tennant <jtennant@squareup.com>
Signed-off-by: John Tennant <jtennant@squareup.com>
Signed-off-by: John Tennant <jtennant@squareup.com>
Signed-off-by: John Tennant <jtennant@squareup.com>
Signed-off-by: John Tennant <jtennant@squareup.com>
Signed-off-by: John Tennant <jtennant@squareup.com>
johnmatthewtennant
force-pushed
the
jtennant/tts-playback-speed
branch
from
July 28, 2026 05:12
6fca35f to
f78b065
Compare
Signed-off-by: John Tennant <jtennant@squareup.com>
Signed-off-by: John Tennant <jtennant@squareup.com>
Contributor
Author
|
🤖 New review-intent sweep completed on the frozen stacked candidate.
Published DCO-signed head: Manual validation still outstanding: listen to Mary and Marius preview plus active-huddle speech at 0.75x, 1.25x, and 1.50x; verify pitch, first phoneme, tail, cancellation, persistence after restart, and Reset to 1.00x. |
johnmatthewtennant
force-pushed
the
jtennant/pocket-tts-settings-v1
branch
2 times, most recently
from
July 29, 2026 00:24
7cc0804 to
acb302e
Compare
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.


Context
Generated speech currently plays at a fixed 1x rate. Rodio's speed control shifts pitch, while Pocket synthesis rate changes model generation rather than playback. This keeps playback speed independent from Pocket-only voice settings and preserves the existing per-chunk streaming path.
Summary
Adds a locally persisted global 0.75x to 1.50x generated-speech playback setting, with a 1x reset and pitch-preserving Signalsmith time stretching. The setting layers into Voice settings while remaining separate from Pocket voice selection and synthesis.
Changes
ssstretch0.1.0 (Signalsmith Stretch), MIT licensed. It is bundled at build time; normal use performs no download.Related issue
N/A. No related issue was supplied.
Testing
just desktop-tauri-clippy: passed with warnings denied.just desktop-test: 3,733 passed on the reviewed pre-restack head. The integrated pre-push run passed 3,736.just desktop-check: passed, including file-size, px-text, and pubkey-truncation guards.just desktop-typecheck: passed.cargo deny check licenses: passed.ssstretchand Signalsmith are MIT licensed; warnings are existing unmatched allowances for MITNFA, OpenSSL, Unicode-DFS-2016, and bzip2-1.0.6.pnpm exec playwright test tests/e2e/voice-settings.spec.ts --project=smoke: 2 of 2 passed in 3.8 seconds.Reviewer-reproducible examples
Run the exact production-helper benchmark:
Observed output on the final DSP implementation:
The 60 ms value is Signalsmith's compensated internal lookahead, not added audible delay; the measured end-to-end processing wall time is shown separately.
Run focused behavior checks: