Repository navigation
fix(voice): install Parakeet from archives with ./-prefixed entries - #461
Conversation
The sherpa-onnx release archive names its entries `./sherpa-onnx-.../model.int8.onnx`. `Path::strip_prefix` keeps the leading `.` component, so no entry matched the pinned directory and a fresh Parakeet install failed with "local voice asset archive omitted a pinned file". Strip a leading current-directory component first. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: John Matthew Tennant <jtennant@block.xyz> Co-authored-by: Henry <a0d9f90f86da5f023099d22b8e3599af162d9423a422d8f385a12815de879cf2@buzz.block.builderlab.xyz>
morgmart
left a comment
There was a problem hiding this comment.
🤖 Automated code review
APPROVE. Fresh static Engineering review of the exact prepared three-dot comparison found no publishable changed-line defects. The extraction change removes only one leading current-directory component before applying the existing pinned archive-directory and exact-file checks, and the discriminating regression test covers the changed behavior. Supplied GitHub evidence is structurally valid and reports successful check runs at the reviewed head SHA; 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: 1 check(s) are not complete.
This approval reflects the completed code review only; merge readiness remains governed by the repository's required checks.
Summary
A fresh Parakeet install fails with "local voice asset archive omitted a pinned file", so a new user can't turn on Voice with local speech recognition. The sherpa-onnx release archive names its entries
./sherpa-onnx-nemo-parakeet_tdt_ctc_110m-en-36000-int8/model.int8.onnx, andPath::strip_prefixkeeps the leading.component, so no entry matched the pinned directory (local_assets.rs). Existing installs are unaffected because they skip extraction.Extraction now strips a leading current-directory component before matching. The size and checksum checks on each pinned file are unchanged.
Reviewer-reproducible example
On macOS, with the published archive (sha256
17f945007b52ccd8b7200ffc7c5652e9e8e961dfdf479cefcabd06cf5703630b):Before this change the last line is
berd-call models.parakeet.install failed: local voice asset archive omitted a pinned file. After it, the result is"outcome":"installed","ready":truewithmodel.int8.onnx,tokens.txtandMODEL_LICENSE.txtundernative-voice-v2/stt. I ran both on a Blox macOS workstation.Validation
The full
berd-callsuite has two failures on Blox (outbound::tests::acknowledged_suspension_does_not_exhaust_the_drain_deadline,siri::tests::exact_uninstalled_voice_is_rejected_without_synthesis) that fail identically without this change.🤖 Generated with Claude Code