Real-time Bible verse detection and ProPresenter slide capture for live services.
- Live audio transcription via WhisperKit (large-v3_turbo model) with Voice Activity Detection
- Bible verse detection using regex, spoken-form normalization, and fuzzy book name matching
- ProPresenter 7 integration — indexes Bible presentations and captures slide images via REST API
- Transparent PNG output at full 1080p resolution, saved to a folder Pro7 watches
- Live slide preview showing the current Pro7 output with computed verse reference labels
- Sequential file naming (
001_John_3_16.png) for chronological order in Pro7 folder playlists - Automatic Pro7 connection and library indexing on app launch
- Persistent settings for audio device, Pro7 host/port, library name, and output folder
- macOS 14.0+ (Sonoma)
- Apple Silicon Mac (M1 or later)
- AudioLoop or similar virtual audio driver
- ProPresenter 7 with Network API enabled
- Bible presentations pre-generated in Pro7 (one per book, transparent background template)
- Download the latest
.zipfrom Releases - Extract the zip
- Right-click
Whisper Verses.appand select Open (required for ad-hoc signed apps) - On first launch, the WhisperKit model (~1.5 GB) will download automatically
- Set up ProPresenter: Generate Bible verse slides for all 66 books using a transparent background template. Place them in a Pro7 library (default: "Default").
- Create a Folder Playlist in Pro7 pointing to the output folder (default:
~/Documents/ProPresenter/WhisperVerses/) - Launch Whisper Verses and configure:
- Select your audio input device (e.g., AudioLoop for system audio capture)
- Enter your Pro7 host IP and port
- Click Connect, then Index to build the verse-to-slide mapping
- Click Start Listening — the app transcribes audio, detects verse references, and saves slide PNGs to the output folder
- In Pro7, the folder playlist updates automatically — the operator triggers verses as needed
| Setting | Description | Default |
|---|---|---|
| Audio Device | Input device for audio capture | System default |
| Pro7 Host | ProPresenter machine IP address | 127.0.0.1 |
| Pro7 Port | ProPresenter API port | 1025 |
| ProPresenter Library | Library name containing Bible presentations | Default |
| Output Folder | Where captured PNGs are saved | ~/Documents/ProPresenter/WhisperVerses/ |
Requires Xcode 16+ and XcodeGen.
git clone https://github.com/NorthwoodsCommunityChurch/whisper-verses.git
cd whisper-verses
xcodegen generate
open WhisperVerses.xcodeprojBuild and run from Xcode, or from the command line:
xcodebuild -project WhisperVerses.xcodeproj -scheme WhisperVerses -configuration Release buildAd-hoc code sign for distribution:
codesign --force --deep --sign - build/Release/WhisperVerses.appWhisperVerses/
├── WhisperVerses.xcodeproj
├── project.yml # XcodeGen project definition
├── Icons/ # Source icon assets (SVG)
├── WhisperVerses/
│ ├── App/
│ │ ├── WhisperVersesApp.swift # @main entry point
│ │ └── AppState.swift # Global observable state
│ ├── Models/
│ │ ├── BibleReference.swift # Parsed verse reference
│ │ ├── BibleBook.swift # Book metadata + aliases
│ │ ├── DetectedVerse.swift # Detection result with timestamp
│ │ ├── TranscriptSegment.swift # Timestamped transcript chunk
│ │ └── ProPresentationMap.swift # Verse ↔ slide index mapping
│ ├── Services/
│ │ ├── Audio/
│ │ │ ├── AudioDeviceManager.swift # CoreAudio device enumeration
│ │ │ └── TranscriptionService.swift # WhisperKit streaming
│ │ ├── Detection/
│ │ │ ├── VerseDetector.swift # Main detection pipeline
│ │ │ ├── SpokenFormNormalizer.swift
│ │ │ ├── BookNameMatcher.swift
│ │ │ └── NumberWordConverter.swift
│ │ └── ProPresenter/
│ │ ├── ProPresenterAPI.swift # REST API client
│ │ ├── PresentationIndexer.swift
│ │ └── SlideImageCapture.swift
│ ├── Views/
│ │ ├── MainView.swift # Three-panel HSplitView
│ │ ├── TranscriptPanelView.swift # Live transcript (left)
│ │ ├── OptionsPanelView.swift # Controls (top-right)
│ │ ├── CapturePreviewPanelView.swift # Slide preview (bottom-right)
│ │ ├── ConnectionStatusView.swift
│ │ └── AudioLevelView.swift
│ ├── Utilities/
│ │ └── ImageConverter.swift # TIFF/JPEG → PNG conversion
│ └── Resources/
│ ├── BibleBooks.json # 66 books with verse counts
│ └── Assets.xcassets
└── WhisperVersesTests/
See LICENSE for details.
See CREDITS.md for third-party attributions.