feat(desktop): import local Pocket voices - #3259
Draft
johnmatthewtennant wants to merge 3 commits into
Draft
Conversation
johnmatthewtennant
added a commit
that referenced
this pull request
Jul 28, 2026
johnmatthewtennant
force-pushed
the
jtennant/pocket-tts-settings-v1
branch
from
July 28, 2026 04:48
4891a92 to
c118f5a
Compare
johnmatthewtennant
force-pushed
the
jtennant/pocket-voice-import
branch
from
July 28, 2026 04:54
c06a505 to
3fb3c74
Compare
Signed-off-by: John Tennant <[email protected]>
Signed-off-by: John Tennant <[email protected]>
johnmatthewtennant
force-pushed
the
jtennant/pocket-voice-import
branch
from
July 28, 2026 05:02
3fb3c74 to
c5832db
Compare
Signed-off-by: John Tennant <[email protected]>
Contributor
Author
johnmatthewtennant
added a commit
that referenced
this pull request
Jul 28, 2026
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
Pocket TTS currently offers only bundled reference voices. People need a local, private way to add another voice without sending audio through the renderer or a cloud service.
Summary
This adds a minimal Pocket voice import flow to the existing Voice settings card. Buzz opens the native file picker, validates and canonicalizes the selected WAV in the reusable
buzz-voicecrate, stores it in app data under a content-derived identity, selects it, and lets the user safely delete it later.Changes
PocketVoiceLibrarytocrates/buzz-voice; Desktop remains a thin Tauri picker and app-data adapter.pocket:imported:<sha256>voice identities and content-addressed app-data files.Related issue
N/A. No related issue was supplied.
Testing
Passed:
cargo test -p buzz-voice imported --lib: 3 passed.BUZZ_POCKET_MODEL_DIR="$HOME/.buzz/models/pocket-tts" cargo test -p buzz-voice --test pocket_import_audio objective_import_synthesis_delete_and_mary_fallback -- --ignored --nocapture: 1 passed. Imported synthesis produced 2.48 seconds of non-silent PCM, interruption discarded partial PCM, deletion selected Mary, and Mary fallback produced 2.56 seconds of non-silent PCM.BUZZ_POCKET_MODEL_DIR="$HOME/.buzz/models/pocket-tts" BUZZ_VOICE_AUDIO_DEVICE="BlackHole 2ch" cargo test -p buzz-voice --test pocket_import_audio blackhole_playback_captures_generated_non_silent_pcm -- --ignored --nocapture: 1 passed. BlackHole captured 15,806 non-silent samples.cd desktop && pnpm run build:e2e.cd desktop && pnpm exec playwright test tests/e2e/voice-settings.spec.ts --project=smoke: 5 passed.Manual listening validation remaining:
Screenshots
Focused Voice settings screenshot. The image was captured after a fresh E2E build, visually inspected for clipping and layout regressions, and has SHA-256
3cee8ad0f42c0a69ab5fa927af16ba283c6b5c6f06c86c89d68040f2a9e247df.Reviewer-reproducible examples
With Pocket TTS already downloaded to Buzz's normal model directory, exercise the full library workflow: import, persist, reload, synthesize, interrupt, delete, and synthesize with Mary fallback.
Observed result:
On macOS with BlackHole 2ch installed, verify that generated imported-voice PCM reaches the audio device and can be captured:
Observed result:
Build the desktop E2E surface and exercise the settings import, selection, preview dispatch, deletion, cancellation, and invalid-file states:
Observed result:
The Playwright flow mocks the native picker boundary. The two manual listening steps above remain required to validate the real file dialog and perceived audio quality.