[platform] Member instances do not auto-install the voice dictation model #307

Open
opened 2026-06-19 14:38:54 +00:00 by mik-tf · 0 comments
Owner

Live voice dictation on a member instance needs a small local speech-segmentation model (Silero VAD, about 0.6 MB) at ~/hero/share/hero_voice/vad/silero_vad.onnx so the voice server can split speech into segments before sending them to the shared transcription engine. The install runner (assets/setup-binaries.sh in this repo, which is also re-run on Update all) installs the voice binary but never fetches this model, and on the current instances the ~/hero/share/hero_voice directory is owned by root while the voice server runs as the driver user, so the server cannot write the file there itself. Right now the model is present only because it was placed by hand, so a fresh provision or a future update would leave it missing and dictation would silently fall back to transcribing only when you press Stop. Fix: in setup-binaries.sh, when the voice component is enabled, make sure ~/hero/share/hero_voice is owned by the driver user and fetch the Silero model into the vad folder, mirroring how the desktop bundle and Chrome are already seeded in the same script (sections 6b and 6c). The voice server now also fetches the model on its own at startup, so once the directory is writable it can self-recover; both were verified on a test member (after the directory was made writable the model re-downloaded in under two seconds). This is the gating step before rolling the voice fix to the production fleet.

Signed-by: mik-tf mik-tf@noreply.invalid

Live voice dictation on a member instance needs a small local speech-segmentation model (Silero VAD, about 0.6 MB) at ~/hero/share/hero_voice/vad/silero_vad.onnx so the voice server can split speech into segments before sending them to the shared transcription engine. The install runner (assets/setup-binaries.sh in this repo, which is also re-run on Update all) installs the voice binary but never fetches this model, and on the current instances the ~/hero/share/hero_voice directory is owned by root while the voice server runs as the driver user, so the server cannot write the file there itself. Right now the model is present only because it was placed by hand, so a fresh provision or a future update would leave it missing and dictation would silently fall back to transcribing only when you press Stop. Fix: in setup-binaries.sh, when the voice component is enabled, make sure ~/hero/share/hero_voice is owned by the driver user and fetch the Silero model into the vad folder, mirroring how the desktop bundle and Chrome are already seeded in the same script (sections 6b and 6c). The voice server now also fetches the model on its own at startup, so once the directory is writable it can self-recover; both were verified on a test member (after the directory was made writable the model re-downloaded in under two seconds). This is the gating step before rolling the voice fix to the production fleet. Signed-by: mik-tf <mik-tf@noreply.invalid>
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lhumina_code/home_lhumina#307
No description provided.