deploy: wire voice in the container — bind + real onnxruntime 1.26

"voice unavailable" in the web UI: mavweb dials mavend:9100, but the container
mavend.json had no voice block, so mavend never bound 9100 (worked pre-docker
because the host's ~/.config/maven/mavend.json had one). Ported that block:
enabled, bind 0.0.0.0:9100 (not 127.0.0.1 — mavweb is a separate container),
lang ru, stt/tts worker sockets, onnx embedder.

Enabling the embedder surfaced a second bug: the router needs onnxruntime 1.26,
but deps/lib only carries dangling symlinks to it (absolute host paths, not in
the image), so the only libonnxruntime present was piper's 1.14 (copied in) →
"ORT API base: 2", crash loop. Fixed the Dockerfile to ship the real 1.26 .so
and stop copying piper's .so into the shared lib dir (piper finds its own 1.14
via $ORIGIN + exact soname, so TTS is unaffected).

Verified: mavend "onnx embedder loaded (384 dim)", "voice listening on :9100",
stack stable.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
kami
2026-07-03 23:07:59 +04:00
parent b129935995
commit 4c4b129789
3 changed files with 30 additions and 4 deletions
+11 -3
View File
@@ -51,11 +51,19 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates libvulkan1 mesa-vulkan-drivers libgomp1 && \
rm -rf /var/lib/apt/lists/*
# runtime native libs: whisper/ggml (incl. vulkan), onnxruntime, piper/espeak.
# runtime native libs: whisper/ggml (incl. vulkan) are real files in deps/lib.
COPY deps/lib/ /opt/maven/lib/
COPY deps/piper/ /opt/maven/piper/
# piper ships its own .so (onnxruntime, espeak, phonemize) — put them on the path too.
RUN cp -a /opt/maven/piper/*.so* /opt/maven/lib/ 2>/dev/null || true
# The router embedder needs onnxruntime 1.26, but deps/lib only carries dangling
# symlinks to it (they point at an absolute HOST path that isn't in the image).
# Ship the real 1.26 lib and repoint the symlinks. Piper keeps its OWN
# onnxruntime 1.14 under /opt/maven/piper (found via piper's $ORIGIN runpath +
# its exact soname libonnxruntime.so.1.14.1) — do NOT copy piper's .so into
# /opt/maven/lib, that clobbers 1.26 and mavend dies with "ORT API base: 2".
COPY deps/onnxruntime-linux-x64-1.26.0/lib/libonnxruntime.so.1.26.0 /opt/maven/lib/
RUN cd /opt/maven/lib \
&& ln -sf libonnxruntime.so.1.26.0 libonnxruntime.so \
&& ln -sf libonnxruntime.so.1.26.0 libonnxruntime.so.1
COPY --from=build /out/ /opt/maven/bin/
ENV LD_LIBRARY_PATH=/opt/maven/lib PATH=/opt/maven/bin:$PATH