4.7 Selecting And Checking Omnivox

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.