This advanced path maintains the reproducible Windows bundle or optional engine integrations. Ordinary WSL2 installations should use the prebuilt Windows release. This source target produces x86-64 Windows.
Requirements are:
powershell.exe and wslpath, plus writable Windows
LocalAppData.
sudo. Docker Desktop’s WSL integration is one option.
dotnet SDK.
Visual Studio is unnecessary.
git, GNU make, curl, unzip, sha256sum, and standard GNU utilities
including awk, cmp, find, readlink, sed, sort, and xargs.
emacsvox and omnivox checkouts, or explicit OMNIVOX_DIR.
The clean release target requires the Omnivox source commit recorded for
the pinned Piper companion in servers/omnivox-release/toolchain.lock;
mismatches fail rather than combining versions. The development route
accepts current source by omitting Piper. Allow disk space for Docker,
native/cross builds, and caches.
Rust, MinGW, CMake, Clang/libclang, eSpeak NG, Roslyn, Visual Studio, and .NET reference assemblies need not be installed in WSL; the controlled toolchain pins/builds them. Eloquence, DECtalk, and RHVoice runtime/data remain optional and unnecessary for WinRT.
Check prerequisites with:
cd /path/to/emacsvox make verify-windows-omnivox-toolchain
The first run downloads pinned .NET compiler packages, builds the pinned Docker image, and checks exact Rust, MinGW, libclang, Roslyn, and Framework versions. It is not a read-only presence check. Failures identify missing host tools or unsupported Framework before the full build.
With clean Emacsvox and sibling Omnivox tracked files, run:
cd /path/to/emacsvox make windows-omnivox
This reproducible release path builds a pinned Windows-GNU executable and
stages a content-addressed runtime under servers/omnivox-bin. When the Piper
lock identifies the matching integrations, it includes the checksum-pinned
Piper companion, RHVoice helper without runtime, Flite with CMU US SLT, and
RuTTS with male/female Russian voices. It bundles no Piper model or RuLex.
The payload is also copied to Windows-local storage to avoid WSL filesystem
cost during discovery. It does not download Eloquence, DECtalk, or RHVoice
runtimes or require them for WinRT.
The final live gate starts that exact runtime, discovers Flite SLT and both
RuTTS voices, and requires nonempty WAV synthesis from each helper. Repeat
without rebuilding using make verify-windows-omnivox-live.
To register Piper, review its model/card and keep the adjacent .onnx.json or
.json. Supply the absolute model path while staging:
OMNIVOX_PIPER_MODEL=/absolute/path/to/voice.onnx make windows-omnivox
Model/configuration are copied to separate content-addressed Windows
LocalAppData storage with recorded hashes, not bundled into the runtime.
Omitting that variable installs the companion but leaves Piper unregistered.
After staging, check with a fresh process:
./servers/omnivox --engine piper --list-voices
Restart both speech processes or Emacs, then inspect running engines with C-e H v b. Piper requires the newly staged server and successfully loaded model/helper. The direct C-e d e preference chooser is not a read-only inventory command; use the browser to inspect without selecting a preference.
For tracked development changes, use the route in Integration Maintenance rather than bypassing the clean-release guard:
OMNIVOX_RHVOICE_LIBRARY=/mnt/c/path/to/RHVoice.dll \ OMNIVOX_RHVOICE_DATA=/mnt/c/path/to/RHVoice/data \ make windows-omnivox-dev ./servers/omnivox --engine flite --list-voices ./servers/omnivox --engine rutts --list-voices
It builds current source, stages RHVoice’s helper, Flite SLT, and RuTTS 6.3.3
male/female voices, deliberately omitting the older pinned Piper companion.
RuTTS needs no separate install; RuLex is excluded. RHVoice needs compatible
RHVoice.dll and language/voice data. Supplied library/data variables are
validated and Windows path pointers retained beside the local runtime; the
launcher restores them for fresh sessions. Also set OMNIVOX_RHVOICE_CONFIG
for a separate configuration directory. These external files are not copied
into the payload. Omnivox’s docs/RHVOICE.md and docs/RUTTS.md give validation
details. Restart after restaging/changing inputs, then inspect with C-e H v b.
Piper tests against newer committed Omnivox use windows-omnivox-piper-dev
and a native Windows CI artifact. It requires the published SHA-256 and a
reviewed external model, rejecting dirty or different source. See
Integration Maintenance for provenance and the complete command. This does
not alter the reproducible release’s pinned companion.