What Are the Default Preferences Set in OpenSuperWhisper?
OpenSuperWhisper stores its default preferences in the AppPreferences singleton class located in OpenSuperWhisper/Utils/AppPreferences.swift, using @UserDefault property wrappers that persist to UserDefaults with sensible fallback values for transcription engines, model paths, and UI behavior.
OpenSuperWhisper is an open-source macOS transcription application that provides sensible out-of-the-box configuration through a centralized preferences system. Understanding the default preferences set in OpenSuperWhisper helps users customize their workflow and developers integrate with the existing settings architecture. These defaults are defined using Swift property wrappers that automatically fall back to predetermined values when no user override exists.
Where Default Preferences Are Defined in OpenSuperWhisper
All default preferences are centralized in AppPreferences.swift within the Utils directory. The implementation uses a singleton pattern exposed via AppPreferences.shared, ensuring consistent access across the application. Each setting utilizes either the @UserDefault or @OptionalUserDefault property wrapper, which reads from UserDefaults.standard and falls back to the defaultValue specified in the source code when no previous user setting exists.
According to the OpenSuperWhisper source code, this architecture ensures that the app launches with functional defaults while allowing full customization through the Settings UI or programmatically.
Complete List of Default Preferences in OpenSuperWhisper
The default preferences cover five functional categories: engine selection, transcription behavior, UI interaction, clipboard automation, and legacy migration support.
Engine and Model Configuration
The transcription backend defaults to the Whisper engine with specific model versioning:
selectedEngine:"whisper"– Selects the Whisper engine as the default transcription backend.selectedWhisperModelPath:nil(optional) – No model path is pre-selected; the app copies the bundled ggml-tiny.en.bin model on first use.fluidAudioModelVersion:"v3"– Version identifier for the Fluid Audio model.whisperLanguage:"en"– Default language code for Whisper transcription.
Transcription Parameters
Audio processing behavior defaults to deterministic output with noise suppression enabled:
translateToEnglish:false– Non-English audio is transcribed in its original language by default.suppressBlankAudio:true– Silent segments are skipped during processing.showTimestamps:false– Timestamps are hidden in output unless explicitly enabled.temperature:0.0– Sampling temperature set to deterministic output (0 = no randomness).noSpeechThreshold:0.6– Threshold for classifying segments as "no speech".initialPrompt:""(empty string) – No initial context is provided to the model.useBeamSearch:false– Greedy decoding is used rather than beam search.beamSize:5– Default beam width when beam search is manually enabled.debugMode:false– Debug logging is disabled by default.
User Interface and Interaction
Recording behavior defaults to hold-to-record with specific autocorrect settings:
playSoundOnRecordStart:false– No audio feedback plays when recording begins.hasCompletedOnboarding:false– The onboarding flow runs automatically on first launch.useAsianAutocorrect:true– Asian-language autocorrection is enabled.modifierOnlyHotkey:"none"– No modifier-only global hotkey is assigned.mouseButtonHotkey:"none"– No mouse button hotkey is assigned.holdToRecord:true– Press-and-hold activates recording mode.addSpaceAfterSentence:true– Automatically inserts spaces after periods during auto-punctuation.
Clipboard and Automation
Post-transcription workflow defaults to automatic clipboard handling:
autoCopyToClipboard:true– Completed transcriptions are automatically copied to the system clipboard.autoPasteTranscription:true– Transcriptions are automatically pasted at the cursor location where appropriate.
Legacy Migration Support
The codebase includes a computed property selectedModelPath that returns the value of selectedWhisperModelPath when the Whisper engine is active, ensuring backward compatibility with earlier versions of the preference schema.
How to Access and Modify Default Preferences Programmatically
Developers can interact with these defaults through the shared singleton instance. The property wrappers automatically synchronize with UserDefaults, ensuring changes persist between app launches.
Access a default preference:
let language = AppPreferences.shared.whisperLanguage // Returns "en"
let engine = AppPreferences.shared.selectedEngine // Returns "whisper"
Override a preference at runtime:
// Increase sampling temperature for more varied output
AppPreferences.shared.temperature = 0.7
// Enable beam search for potentially more accurate transcription
AppPreferences.shared.useBeamSearch = true
Check the initialization status:
if !AppPreferences.shared.hasCompletedOnboarding {
// Show onboarding flow
}
As implemented in OpenSuperWhisperApp.swift, the preferences singleton initializes early in the app lifecycle, while Settings.swift provides the UI layer that binds these properties to user-facing controls.
Summary
- Centralized Configuration: All default preferences are defined in
OpenSuperWhisper/Utils/AppPreferences.swiftusing theAppPreferencessingleton. - Property Wrapper Pattern: Settings use
@UserDefaultand@OptionalUserDefaultto read fromUserDefaultswith automatic fallback to code-defined defaults. - Whisper Defaults: The app defaults to the Whisper engine with English language (
"en"), deterministic sampling (temperature: 0.0), and the bundled tiny model. - Automation Enabled: By default, completed transcriptions automatically copy to the clipboard and paste at the cursor location.
- Hold-to-Record: The default interaction mode requires holding a key to record, with no startup sounds and Asian autocorrection enabled.
Frequently Asked Questions
Where are OpenSuperWhisper preferences stored on disk?
OpenSuperWhisper stores preferences using the standard UserDefaults system, which on macOS persists to the application's preferences plist file in ~/Library/Preferences/. The @UserDefault property wrappers in AppPreferences.swift handle all reads and writes to this location automatically.
What is the default transcription language in OpenSuperWhisper?
The default transcription language is English ("en"), configured via the whisperLanguage property in AppPreferences.swift. This setting corresponds to the Whisper model's language parameter and can be changed to any supported language code through the Settings UI.
How do I change the default model path in OpenSuperWhisper?
The selectedWhisperModelPath defaults to nil, causing the app to use the bundled ggml-tiny.en.bin model. To specify a different model programmatically, set AppPreferences.shared.selectedWhisperModelPath to the absolute path of your preferred .bin file, or use the model selection interface in Settings.swift.
Are OpenSuperWhisper preferences persisted between app launches?
Yes. All preferences marked with @UserDefault or @OptionalUserDefault are automatically persisted to UserDefaults.standard. When the app relaunches, these property wrappers retrieve the saved values, falling back to the hardcoded defaults only if no previous value exists.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →