14.2 Install Omnivox From A Release Binary

14.2.1 macOS with Homebrew

On macOS (formerly OS X), install Homebrew and follow its shell setup instructions. Then install Omnivox from the official Homebrew tap:

brew install bartbunting/omnivox/omnivox
omnivox_program="$(brew --prefix omnivox)/bin/omnivox"
"$omnivox_program" --version
"$omnivox_program" --check
"$omnivox_program" --list-voices

Homebrew selects the Apple silicon or Intel archive and verifies its checksum. The version must be 1.18.0 or newer, and the check must produce both a tone and spoken confirmation. Apple system speech and eSpeak are included. You do not need a Rust build or Omnivox source checkout. Install Emacs 30.2 or newer separately; this tap does not install Emacs or Emacsvox.

To select this Homebrew installation persistently for Emacsvox, record the stable executable path:

omnivox_config_home="${XDG_CONFIG_HOME:-$HOME/.config}"
omnivox_config_file="${EMACSVOX_OMNIVOX_CONFIG_FILE:-$omnivox_config_home/emacsvox/omnivox-program}"
mkdir -p "$(dirname "$omnivox_config_file")"
printf '%s\n' "$omnivox_program" > "$omnivox_config_file"

This replaces any previous executable selection in that file. The path uses Homebrew’s current-version link and continues to work after upgrades. Do not substitute a versioned Cellar/omnivox/... path. The bundled launcher reads this file even when Emacs does not inherit the shell’s Homebrew PATH, as can happen when starting from Finder. An explicit OMNIVOX_PROGRAM override still takes precedence; remove or update an override selecting another installation. If using EMACSVOX_OMNIVOX_CONFIG_FILE or XDG_CONFIG_HOME, make sure the launching Emacs sees the same location.

Emacsvox uses its bundled Lisp adapter. Do not load Homebrew’s libexec/omnivox-voices.el, intended for upstream Emacspeak. Continue with Quick Installation to compile Emacsvox, run ./bin/emacsvox --diagnose and ./bin/emacsvox --check, and start an isolated speaking session. Confirm the selected server and audible output on your Mac.

To upgrade Omnivox later:

brew update
brew upgrade omnivox
"$(brew --prefix omnivox)/bin/omnivox" --version
"$(brew --prefix omnivox)/bin/omnivox" --check

Restart Emacsvox after upgrading so both speech processes use the new executable. Updating Emacsvox alone does not upgrade Homebrew’s package. brew uninstall omnivox removes it; select another server before restarting Emacsvox because the saved executable path remains in your configuration.

Optional Piper, Flite, and RuTTS companions and voice models are separate. The bundled RHVoice bridge still needs a compatible user-installed runtime and data; its presence does not establish macOS runtime support. Keep optional companions, downloaded voices, and configuration outside Homebrew’s Cellar, and use explicit paths as described in the Omnivox engine guides. Companions must match core release and architecture. The WSL optional-engine installer is not a Homebrew package manager.

The tap installs published binaries without adding Apple Developer ID signing or notarisation. If local policy refuses the verified binary, use Installing Omnivox From Source. Native tap checks cover WAV synthesis and package operations; they do not replace listening acceptance in Emacs or prove an upgrade between different upstream versions.

14.2.2 Manual archive installation

Use this route for GNU/Linux x86-64 with an Ubuntu 24.04-compatible runtime, macOS on Apple silicon, or macOS on Intel. The Omnivox 1.18.0 release supplies:

HostSet platform toArchive
GNU/Linux x86-64linux-x64omnivox-1.18.0-linux-x64.tar.gz
macOS Apple siliconmacos-arm64omnivox-1.18.0-macos-arm64.tar.gz
macOS Intelmacos-x64omnivox-1.18.0-macos-x64.tar.gz

On a Mac, uname -m identifies arm64 for Apple silicon or x86_64 for Intel. Create a download directory, select the platform, and fetch the archive and published checksums:

mkdir -p "$HOME/Downloads/omnivox-1.18.0"
cd "$HOME/Downloads/omnivox-1.18.0"
omnivox_version=1.18.0
platform=linux-x64
archive="omnivox-${omnivox_version}-${platform}.tar.gz"
release_url="https://github.com/bartbunting/omnivox/releases/download/v${omnivox_version}"
curl -fLO "$release_url/$archive"
curl -fLO "$release_url/sha256sums.txt"

Replace linux-x64 with the appropriate Mac value when needed. Verify before extraction. On GNU/Linux:

grep "  $archive$" sha256sums.txt | sha256sum --check -

On macOS:

grep "  $archive$" sha256sums.txt | shasum -a 256 --check

The command must name the archive and report OK. Otherwise remove the download and do not run it. Extract the verified payload into a versioned directory, keeping every supplied directory beside the executable:

install_dir="$HOME/.local/opt/omnivox-${omnivox_version}"
mkdir -p "$install_dir"
tar -xzf "$archive" -C "$install_dir"
chmod 755 "$install_dir/omnivox"
export PATH="$install_dir:$PATH"

Add that PATH entry to the shell startup used to launch Emacs for subsequent sessions. The directory contains omnivox, espeak-ng-data, third-party-licenses, and omnivox-voices.el. Do not load or copy the last file into Emacsvox, which has its own adapter.

Check the binary before starting Emacsvox:

omnivox --version
omnivox --check
omnivox --list-voices

The version must be at least 1.18.0 and the check must produce tone and speech. Mac archives are neither code-signed nor notarised. If security policy refuses the verified binary, use the source route rather than weakening policy. On GNU/Linux, missing libraries or incompatible glibc also call for a source build.

For WSL2, use Installing An Omnivox Windows Release Under WSL2, which verifies a Windows archive without requiring a compiler or Docker.