Skip to content

feat(voice): add native macOS Siri speech - #164

Merged
johnmatthewtennant merged 13 commits into
mainfrom
jtennant/sirittsd-backend
Aug 21, 2026
Merged

feat(voice): add native macOS Siri speech#164
johnmatthewtennant merged 13 commits into
mainfrom
jtennant/sirittsd-backend

Conversation

@johnmatthewtennant

@johnmatthewtennant johnmatthewtennant commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds native macOS Siri voices as a speech-output backend. Pocket TTS remains the default. On macOS, users can explicitly choose Siri, and Berd automatically selects a downloaded catalog voice when needed.

Voice settings expose exact regional locales, system-provided previews before download, voice download and selection, playback speed, and refreshed installed state. Assistant text streams through the selected native voice using the existing voice-conversation lifecycle.

Reviewer-reproducible examples

  • On a Mac with a downloaded Siri voice, start Voice Conversation. Berd starts without showing voice setup, and the first assistant response uses the automatically selected voice.
  • In Voice settings, choose a regional locale such as Australian English. Only that exact locale is shown. Preview a downloadable voice, download it, select it, and confirm the next assistant response uses it.
  • Add or remove a Siri voice in macOS System Settings, then return to Berd or switch the speech backend away and back. The installed and downloadable state refreshes.

Testing

Manually confirmed Siri assistant playback and playback-speed changes in the isolated macOS development build.

@johnmatthewtennant
johnmatthewtennant marked this pull request as ready for review August 21, 2026 20:56
@johnmatthewtennant
johnmatthewtennant requested a review from a team August 21, 2026 20:56

@morgmart morgmart left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Automated code review

REQUEST_CHANGES: static review found one blocking lifecycle failure in the new Siri streaming path and one non-blocking window-cleanup issue. The supplied GitHub evidence was inspected; all reported check runs were completed successfully. No review threads were supplied, so no findings were suppressed as duplicates.

Deterministic publication result: 1 blocking and 1 non-blocking finding(s) publishable; 0 duplicate(s) suppressed.

Comment thread src-tauri/src/commands/siri_voice.rs
Comment thread src-tauri/src/commands/window_session.rs Outdated

@morgmart morgmart left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Automated code review

COMMENT: the fresh full-range static review found one new non-blocking settings-concurrency issue. Two still-present lifecycle issues are suppressed because they already have unresolved GitHub threads. The supplied GitHub evidence was inspected; all reported check runs were completed successfully.

Deterministic publication result: 0 blocking and 1 non-blocking finding(s) publishable; 2 duplicate(s) suppressed.

Comment thread src-tauri/src/commands/siri_voice.rs Outdated

@morgmart morgmart left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Automated code review

NO PUBLICATION: the fresh full-range static review found no new publishable findings, but approval fails closed because a still-present settings-concurrency issue maps to an unresolved automation thread without a substantive human reply. A preview-specific manifestation of the Siri no-callback stall is also suppressed forever by the resolved thread's substantive human reply. The supplied GitHub evidence was inspected: the Linux Tauri Rust check failed, while other checks were still in progress; required checks independently govern merge readiness.

Deterministic publication result: 0 blocking and 0 non-blocking finding(s) publishable; 2 duplicate(s) suppressed.

@morgmart morgmart left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Automated code review

APPROVE: the fresh full-range static review found no new publishable findings. The previously reported stream-stall, window-ownership, and settings-concurrency issues are fixed in the current comparison. One remaining preview-specific no-callback manifestation is suppressed forever because it maps to a resolved thread with a substantive human-account reply. The supplied GitHub evidence was inspected: Linux, Windows, and macOS Tauri Rust checks, DCO, and clean-room install passed; frontend checks were still in progress, and required checks independently govern merge readiness.

Deterministic publication result: 0 blocking and 0 non-blocking finding(s) publishable; 1 duplicate(s) suppressed.

Pending checks: 2 check(s) are not complete.

This approval reflects the completed code review only; merge readiness remains governed by the repository's required checks.

@johnmatthewtennant
johnmatthewtennant merged commit 5e57275 into main Aug 21, 2026
8 checks passed
@johnmatthewtennant
johnmatthewtennant deleted the jtennant/sirittsd-backend branch August 21, 2026 22:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants