First test Omnivox without Emacs. On GNU/Linux or macOS, run the installed binary:
omnivox --version omnivox --check omnivox --list-voices
Under WSL2, test the Emacsvox launcher. It selects an explicit pre-built
OMNIVOX_PROGRAM first, otherwise the content-addressed source-built runtime:
./servers/omnivox --check
The check initializes the selected engine and audio output, then plays a tone and speech. Success ends with a message saying that everything is working if both were heard. Do not continue merely because the command exited zero: hearing both signals is the backend acceptance condition.
Next select the server before loading Emacsvox:
export TTS_PROGRAM=omnivox
Make that setting visible in the shell used to launch Emacs. An
export affects only that shell and its children; placing it in a
shell startup file makes the choice persistent for later sessions. On POSIX
systems, Emacsvox’s servers/omnivox launcher finds an installed
omnivox on PATH; OMNIVOX_PROGRAM can instead name its
absolute executable and takes precedence over a source-built staged runtime.
Native Windows Emacs resolves omnivox.exe directly through exec-path, or
uses the absolute executable named by TTS_PROGRAM. That route remains
preview. For its bounded evaluation procedure, see
Trying Native Windows Emacsvox.
Inside a running Emacsvox session, M-x omnivox selects the same server
temporarily. Use M-x tts-speak-version to identify the live adapter
and M-x tts-restart after changing server configuration. This backend
contract stops at a proven speech server; the complete isolated Emacs start,
expected startup speech, and no-speech recovery belong to the first-use
procedure.