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.
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:
| Host | Set platform to | Archive |
|---|---|---|
| GNU/Linux x86-64 | linux-x64 | omnivox-1.18.0-linux-x64.tar.gz |
| macOS Apple silicon | macos-arm64 | omnivox-1.18.0-macos-arm64.tar.gz |
| macOS Intel | macos-x64 | omnivox-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.