How theyogram/souffleur works
Souffleur is a macOS voice-following teleprompter. Users manage local scripts, select one for playback, then the app captures microphone audio, recognizes speech on-device, matches spoken words against the script, and updates the floating prompter’s position. Sound-triggered and constant-speed modes, script import/editing, audio-device selection, appearance settings, and spoken-text display are also documented capabilities. Edges reflect sampled calls or explicit README statements; unsampled feature links are omitted where their wiring is not evidenced.
Main entry points: PlaybackController.swift Playback controller · AppleSpeechEngine.swift Apple speech engine · PrompterWindowController.swift Prompter window · ScriptStore.swift Local script store
Components 20
App orchestration
- Playback controller
Souffleur/App/PlaybackController.swift - Preferences
Souffleur/Settings/SettingsView.swift - Settings keys
Souffleur/Shared/SettingsKeys.swift
Script library
- Script library UI
Souffleur/Editor/LibraryView.swift - Local script store
Souffleur/Library/ScriptStore.swift - Script records
Souffleur/Library/Script.swift
Audio and recognition
- Microphone capture
Souffleur/Audio/AudioCapture.swift - Audio devices
Souffleur/Audio/AudioDevices.swift - Apple speech engine
Souffleur/Speech/AppleSpeechEngine.swift - Locale resolver
Souffleur/Speech/LocaleResolver.swift - Speech permissions
Souffleur/Speech/SpeechPermissions.swift
Speech tracking
- Script matcher
Souffleur/Tracking/ScriptMatcher.swift - Text tokenizer
Souffleur/Tracking/Tokenizer.swift - Context vocabulary
Souffleur/Tracking/VocabularyExtractor.swift - Scroll driver
Souffleur/Tracking/ScrollDriver.swift
Prompter interface
- Prompter window
Souffleur/Prompter/PrompterWindowController.swift - Script text view
Souffleur/Prompter/PrompterTextView.swift - Scroll animator
Souffleur/Prompter/ScrollAnimator.swift
Other components
- Presenter
- Apple speech services
Connections 22
- Presenter → Script library UI: edits scripts
Souffleur/Editor/LibraryView.swift - Script library UI → Local script store: creates and edits
Souffleur/Editor/LibraryView.swift - Local script store → Script records: stores records
Souffleur/Library/ScriptStore.swift - Presenter → Playback controller: starts playback
README.md - Playback controller → Local script store: loads script
Souffleur/App/PlaybackController.swift - Playback controller → Text tokenizer: tokenizes script
Souffleur/App/PlaybackController.swift - Playback controller → Locale resolver: resolves locale
Souffleur/App/PlaybackController.swift - Playback controller → Context vocabulary: extracts context
Souffleur/App/PlaybackController.swift - Playback controller → Microphone capture: starts capture
Souffleur/App/PlaybackController.swift - Microphone capture → Audio devices: queries devices
Souffleur/Audio/AudioCapture.swift - Playback controller → Apple speech engine: starts recognition
Souffleur/App/PlaybackController.swift - Apple speech engine → Speech permissions: requests access
Souffleur/Speech/AppleSpeechEngine.swift - Apple speech engine → Apple speech services: uses on-device recognition
Souffleur/Speech/AppleSpeechEngine.swift - Apple speech services → Apple speech engine: streams transcript
README.md - Playback controller → Script matcher: matches transcript
Souffleur/App/PlaybackController.swift - Playback controller → Prompter window: updates cursor
Souffleur/App/PlaybackController.swift - Script matcher → Text tokenizer: uses token rules
Souffleur/Tracking/ScriptMatcher.swift - Prompter window → Script text view: renders script
Souffleur/Prompter/PrompterWindowController.swift - Prompter window → Scroll animator: advances scrolling
Souffleur/Prompter/PrompterWindowController.swift - Playback controller → Settings keys: reads playback settings
Souffleur/App/PlaybackController.swift - Preferences → Settings keys: uses preference keys
Souffleur/Settings/SettingsView.swift - Presenter → Preferences: configures display
README.md