Live sermon translation into 100+ languages, running entirely on one Mac per campus: audio in, voice detection, Whisper on the GPU, NLLB-200 in its own process, and a built-in web server the congregation reads from on their phones. No audio leaves the building. This is the source only. What used to sit beside it — 14 GB of speech and translation models, 8 GB of voice bundles, 6 GB of natural voices, the Electron caches, and the app data holding the operator PIN and every service transcript — is machine state and downloaded assets, and stays in the NAS backup where it belongs. The vendored node, cloudflared and Windows ffmpeg binaries are out too (533 MB, re-fetched for packaging); the browser-side runtime beside them is kept, so a checkout still serves the congregation page. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
3.2 KiB
Setting it up at a campus
Once per Mac. Most of the time is the app downloading its models.
There is no server to deploy, nothing to configure on a NAS, and no address to type in. The app carries everything.
1. Install the app
Copy Church Translate.app to /Applications on the campus Mac and open it.
Two things happen on a first run and never again:
- macOS asks for microphone access. Click Allow. Without it the app can see audio devices but hears silence from all of them.
- It downloads about 1.5 GB of models. Leave it running; the progress bar is approximate because Hugging Face does not send a size for every file. After this, opening the app takes seconds.
The box at the top turns blue and says Ready when it is done.
The app is unsigned, so the first open needs right-click → Open rather than a double-click. macOS only asks once.
2. Point it at the pastor's microphone
Sermon audio → Input device. Dante Virtual Soundcard, Waves SoundGrid and a console USB feed all appear here as ordinary inputs — see AUDIO.md.
Watch the meter while someone talks. Speech should push the bar past the notch and turn it green; room noise between sentences should sit below it. The Sensitivity slider moves the notch.
3. Tell the congregation where to go
The What the congregation opens panel shows every address this Mac can be reached at. If the Mac is on more than one network, click the address that is on the same network as people's phones — the QR code follows your choice.
Then: Printable poster → print it → put it where people sit.
4. Add the Stream Deck button
One Generic HTTP action. See COMPANION.md.
5. Before you announce it
- Press START TRANSLATING on the operator page and talk into the mic. Watch the words appear under What it is hearing in the app. If those words are right, everything downstream is right.
- Scan the QR with your own phone, pick a language, confirm captions arrive.
- Tap the speaker icon and confirm your phone reads them aloud.
- Add anything it mishears to Corrections — your pastor's name, your church's name, the book of Habakkuk.
Where things live
| The app | /Applications/Church Translate.app |
| Config, PIN, transcripts | ~/Library/Application Support/Church Translate/data/ |
| Model weights (~7 GB) | ~/Library/Application Support/Church Translate Models/ |
| Opens at login | ~/Library/LaunchAgents/org.waterschurch.translate.plist |
To stop it opening at login:
launchctl unload ~/Library/LaunchAgents/org.waterschurch.translate.plist
Another campus
Copy the same .app across and repeat. Each campus is completely independent —
its own settings, its own PIN, its own transcripts. Nothing syncs and nothing
depends on anything else being up.
The models download again on each new Mac. If bandwidth is tight, copy
~/Library/Application Support/Church Translate Models/ across by hand and the
app will use it as-is.
What it costs per campus
Nothing recurring. Dante Virtual Soundcard is about $50 once, and only if you go the Dante route — Waves SoundGrid and a console USB feed cost nothing.