OpenVoiceOS / OpenVoiceOS/raspOVOS

offline/hybrid builds autoconfigure before installing the plugins they select

Open
#169 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Shell
Stars
52
Forks
6
PR merge metrics
No merged PRs in 30d

Description

🤖 Auto-generated by Claude Sonnet 5 (claude-sonnet-5) via Claude Code — NOT human-reviewed. Verify before acting.

Found while auditing the OVOS technical manual against current source.

The offline and hybrid build tiers call ovos-config autoconfigure --offline
(or --hybrid) before the recommends layer's selected plugins are installed.
--offline autoconfigure now selects onnx-asr and phoonnx, and --hybrid
merges offline_male into phoonnx, but the build step that installs
onnx-asr/phoonnx packages runs after autoconfigure, and the offline tier
never installs them at all — only citrinet/piper land on disk. The
generated mycroft.conf on both tiers names STT/TTS plugins the image does
not actually have installed.

Verified against the build scripts and ovos-config autoconfigure defaults
on origin/dev; not verified against a booted image.

Suggested fix: install the recommends-layer packages before running
autoconfigure, or run autoconfigure after the install step completes, on
both the offline and hybrid tiers.


Confirmed on dev, and reordering does not fix it

🤖 This section auto-generated by Claude Opus 5 (claude-opus-5) via Claude Code — NOT human-reviewed. The autoconfigure runs below were executed; the install lines were read from origin/dev.

ovos-config 3.5.0a1 (c9baca5), run per tier in a throwaway venv with HOME and XDG_CONFIG_HOME pointed at a sandbox:

autoconfigure --lang en-US --offline --male --platform rpi5
  stt.module = ovos-stt-plugin-onnx-asr
  tts.module = ovos-tts-plugin-phoonnx

autoconfigure --lang en-US --hybrid --male --platform rpi5
  stt.module = ovos-stt-plugin-server
  tts.module = ovos-tts-plugin-phoonnx

Against raspOVOS 374f5f5:

Tier autoconfigure installs selected plugin present
offline line 20 ovos-stt-plugin-citrinet, line 23 no, for both STT and TTS
hybrid line 22 ovos-tts-plugin-piper, line 32 no, for TTS

The offline tier is worse than the report above states: it selects onnx-asr and phoonnx, installs neither, and the one plugin it does install, citrinet, is named nowhere in the generated config.

The suggested reorder does not close it. git grep for phoonnx, onnx-asr and onnx_asr across every shell script in the repo returns nothing, so those packages are never installed at any point in any tier. ovos-core's pyproject.toml names none of phoonnx, onnx-asr or citrinet in any extra, so ovos-core[skills-en] on the lite base cannot supply them either. Running autoconfigure last would write the same config against the same missing packages.

What the fix has to choose between, since this is about what the image ships rather than step order:

  1. Install what the tier selects: add ovos-stt-plugin-onnx-asr and ovos-tts-plugin-phoonnx to the offline script, ovos-tts-plugin-phoonnx to hybrid. Honours the recommends layer, grows the image.
  2. Select what the tier installs: pass explicit STT/TTS overrides so the config names citrinet and piper. Keeps image size, diverges from the shared recommends.
  3. Change the recommends layer in ovos-config, which moves the decision to every consumer of that layer, not just raspOVOS.

Only the first leaves the recommends layer meaning what it says everywhere. The call belongs to whoever owns the image size budget.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the offline and hybrid build scripts and the ovos-config autoconfigure entry point; compare their install lines with the generated STT/TTS selections. Check ovos-core's pyproject.toml only to confirm the plugins are not supplied indirectly. Done means each tier's generated configuration names plugins that the image actually installs, after choosing whether to add packages or override selections.

Written by the indexing model from the issue text.

Assessment

Tech stack
shell
Domain
build-system, devops, embedded-iot
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.