14.3 Install An Omnivox Windows Release Under WSL2

This is the ordinary WSL2 route for x86-64 Windows and Windows on ARM. From the Emacsvox checkout, first inspect without changing anything:

./bin/emacsvox-wsl-install --check

The doctor detects Windows architecture, selects its Omnivox 1.18.0 archive, and reports Emacs and per-user paths. Missing Linux packages are reported with an apt command for you to review and run. Working powershell.exe and wslpath interoperation are required. Resolve prerequisites, then run:

./bin/emacsvox-wsl-install

etc/wsl-install.conf pins the Omnivox version, release URL, x64/ARM64 archive names, and both SHA-256 hashes. The installer queries Windows architecture and verifies the matching published archive; it does not build Omnivox.

The full payload is installed below the Windows user’s LocalAppData. Its absolute WSL executable path is recorded in $XDG_CONFIG_HOME/emacsvox/omnivox-program, normally ~/.config/emacsvox/omnivox-program. The installer does not invoke sudo or edit shell startup. It compiles Emacsvox, runs a non-audible launcher diagnostic, and finishes with the audible server check. Confirm both tone and speech.

No Omnivox checkout, Docker, Rust, MinGW, Visual Studio, Windows .NET Framework, or optional/proprietary runtime is needed. WinRT speech is included in Windows. Use ./bin/emacsvox-wsl-install --no-audio-check only for controlled/headless installation with a separate audible check later.

14.3.1 Manual Release Installation

Use this equivalent manual procedure to inspect installer actions, work around a restriction, or repair one layer. It needs curl, unzip, sha256sum, powershell.exe, and wslpath. The example uses Windows x64. On Windows on ARM, use windows-arm64 in the archive and installation directory and verify that archive’s checksum.

Download from WSL:

mkdir -p "$HOME/Downloads/omnivox-1.18.0"
cd "$HOME/Downloads/omnivox-1.18.0"
omnivox_version=1.18.0
archive="omnivox-${omnivox_version}-windows-x64.zip"
release_url="https://github.com/bartbunting/omnivox/releases/download/v${omnivox_version}"
curl -fLO "$release_url/$archive"
curl -fLO "$release_url/sha256sums.txt"
grep "  $archive$" sha256sums.txt | sha256sum --check -

The last command must name the archive and report OK. Otherwise remove it and do not run it. Install all files on the Windows filesystem:

windows_local_app_data="$(powershell.exe -NoProfile -NonInteractive \
  -Command '[Environment]::GetFolderPath("LocalApplicationData")' | tr -d '\r')"
install_dir="$(wslpath -u "$windows_local_app_data")/Emacsvox/Omnivox/releases/$omnivox_version-windows-x64"
mkdir -p "$install_dir"
unzip -q -o "$archive" -d "$install_dir"
chmod 755 "$install_dir/omnivox.exe"
config_home=${XDG_CONFIG_HOME:-"$HOME/.config"}
mkdir -p "$config_home/emacsvox"
printf '%s\n' "$install_dir/omnivox.exe" > \
  "$config_home/emacsvox/omnivox-program"

Keep omnivox.exe, espeak-ng-data, and third-party-licenses together. Do not load the archive’s omnivox-voices.el; Emacsvox supplies its adapter. This data-only file persists selection without shell initialisation. Respect XDG_CONFIG_HOME when set. OMNIVOX_PROGRAM remains an explicit temporary override with precedence over the file.

Verify through the checkout’s launcher:

./servers/omnivox --version
./servers/omnivox --list-voices
./servers/omnivox --check

Confirm version 1.18.0 or newer, tone, and speech. Release CI verifies archive, x64 architecture, adjacent eSpeak data, discovery, and headless WinRT/eSpeak synthesis; only listening checks your audio path. The Windows archive is not code-signed. Do not weaken Windows security or local policy to install it.

The generic 1.18.0 archive includes TGSpeechBox profiles/language data and a portable RHVoice helper. RHVoice’s runtime and voice/language packages are separate. Optional Piper, Flite, and RuTTS companions are not required for WinRT; matching 1.18.0 companions are published separately.

The clean source-build route verifies/stages the official Piper companion and builds RHVoice, Flite, and RuTTS from matching source. Piper models and the RHVoice runtime/data are not bundled by that build. A compatible local voice management service can separately download the reviewed voice packages below; this does not acquire the RHVoice runtime. Flite/RuTTS need no external runtime in the source-built bundle. Eloquence/DECtalk runtimes remain separately licensed and supplied.