Add OpenAI-compatible voice servers (faster-whisper + Kokoro)

Path B from VoiceModels.md — adds two new compose stacks alongside the
Wyoming pair so OpenWebUI/Conduit get voice without a Wyoming-shim:

- compose/faster-whisper.yml — fedirz/faster-whisper-server CPU image,
  large-v3-turbo by default, OpenAI /v1/audio/transcriptions on :8001.
  Built-in web UI for ad-hoc transcription.
- compose/kokoro.yml — ghcr.io/remsky/kokoro-fastapi-cpu, Kokoro-82M,
  OpenAI /v1/audio/speech on :8880.

Both run alongside (not instead of) Wyoming Whisper + Piper — Wyoming
keeps serving HA Assist, OpenAI-API serves OpenWebUI / Conduit. Memory
budget on Strix Halo accommodates everything plus Qwen3-Coder loaded
concurrently with plenty of headroom.

Homepage gets dedicated tiles for both. README documents the
OpenWebUI Audio configuration that wires the new endpoints. Conduit
inherits voice via OpenWebUI without app-side setup.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-08 14:42:45 -04:00
parent 36b8cfe835
commit 6db46d8f6a
7 changed files with 157 additions and 27 deletions

View File

@@ -341,6 +341,8 @@ for svc in (
"homepage",
"whisper",
"piper",
"faster-whisper",
"kokoro",
):
files.directory(
name=f"compose/{svc} dir",
@@ -490,6 +492,23 @@ files.directory(
_sudo=True,
)
# OpenAI-compatible voice servers — alternative path to Wyoming, used by
# OpenWebUI's Audio settings (and through it, Conduit on Android).
files.directory(
name="faster-whisper cache dir",
path=f"{COMPOSE_DIR}/faster-whisper/cache",
group="docker",
mode="2775",
_sudo=True,
)
files.directory(
name="Kokoro models dir",
path=f"{COMPOSE_DIR}/kokoro/models",
group="docker",
mode="2775",
_sudo=True,
)
# --- Cleanup of artifacts from the prior native-build deploy ----------------
# All idempotent — `present=False` is a no-op when the target is absent.