Install on macOS
Tested on macOS 13 (Ventura), 14 (Sonoma), and 15 (Sequoia) on Intel and Apple Silicon.
1. Install Homebrew (if needed)​
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
2. System dependencies​
brew install python@3.12 git git-lfs portaudio libsndfile ffmpeg cmake pkg-config
brew install blackhole-2ch # virtual audio cable
For v0.2+ GNU Radio flowgraphs:
brew install gnuradio soapysdr
# gr-dnn ships as a wheel in v0.2; see Architecture → Flowgraphs
3. Virtual cable setup​
BlackHole is the de-facto free virtual cable on macOS.
- After
brew install blackhole-2ch, open Audio MIDI Setup (⌘+Space → "Audio MIDI Setup"). - Click + → Create Multi-Output Device.
- Check both BlackHole 2ch and your MacBook / external speakers.
- Rename it to something obvious like "RFW-Listen".
Use BlackHole 2ch as RFWhisper's output device and as WSJT-X's input device.
4. RFWhisper​
git clone https://github.com/jakenherman/rfwhisper.git
cd rfwhisper
python3.12 -m venv .venv && source .venv/bin/activate
pip install -U pip wheel
pip install -e ".[audio]"
python -m rfwhisper.models.fetch
rfwhisper doctor
5. Apple Silicon: CoreML acceleration​
onnxruntime on Apple Silicon includes the CoreML execution provider automatically. RFWhisper will prefer it when available:
rfwhisper info providers
# CoreMLExecutionProvider (preferred on M-series)
# CPUExecutionProvider (fallback)
This typically halves inference latency vs CPU-only for DeepFilterNet3.
6. Privacy & mic permissions​
macOS will prompt for microphone access the first time you run rfwhisper denoise-live. If you miss the prompt:
- System Settings → Privacy & Security → Microphone — allow Terminal (or your editor).
Troubleshooting​
OSError: PortAudio library not found—brew reinstall portaudioand ensure your shell picks up/opt/homebrew/binon the PATH (Apple Silicon) or/usr/local/bin(Intel).- No sound through BlackHole — verify the Multi-Output Device is selected as system output; check that input/output sample rates match (48 kHz is our default).
arm64vsx86_64pip conflicts — create your venv with the native Python (which python3.12should end in/opt/homebrew/on Apple Silicon).- Rosetta — not required. Do not install x86_64 Python on Apple Silicon; you'll lose CoreML.