feat(voice): expose reusable voice runtime - #282
Conversation
morgmart
left a comment
There was a problem hiding this comment.
🤖 Automated code review
Engineering found one blocking startup-lifecycle defect in the new external voice session. Supplied GitHub evidence is structurally valid and shows all 10 captured checks passing; no prior review threads were supplied.
Deterministic publication result: 1 blocking and 0 non-blocking inline finding(s) publishable; 0 duplicate(s) suppressed; 0 blocking screenshot-evidence requirement(s) in this review body.
morgmart
left a comment
There was a problem hiding this comment.
🤖 Automated code review
Engineering completed a fresh static review of the full exact PR comparison and found no publishable findings. The prior startup-readiness defect is fixed at this head and its resolved thread has a substantive human reply. Supplied GitHub evidence is structurally valid; five captured checks passed and three were still in progress, so required checks still govern merge readiness.
Deterministic publication result: 0 blocking and 0 non-blocking inline finding(s) publishable; 0 duplicate(s) suppressed; 0 blocking screenshot-evidence requirement(s) in this review body.
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.
d1bf956 to
9fbcecc
Compare
Summary
Berd's voice stack was spread across Tauri command modules, which made engine behavior difficult to test independently and kept reusable voice policy coupled to the desktop shell. This PR introduces a
berd-voiceRust crate that owns speech recognition, synthesis, voice activity detection, turn admission, interruption, delivery tracking, and bounded engine lifecycle. Berd remains linked to the runtime in-process, while its Tauri hosts retain device I/O, window authorization, and renderer projection.The runtime provides one session model for Siri and macOS Speech, Pocket and Parakeet, and OpenAI. It also provides command-line surfaces for voice and model management, file synthesis, deterministic benchmarks, and host-provided PCM sessions. Live voice and rate changes, false-barge recovery, and spoken-prefix delivery reporting use the same runtime contracts as the app.
Testing
In a local Berd development build: