# What Are the Default Preferences Set in OpenSuperWhisper?

> Discover the default preferences in OpenSuperWhisper. Learn about transcription engines, model paths, and UI behavior stored in AppPreferences using @UserDefault wrappers.

- Repository: [Starmel/OpenSuperWhisper](https://github.com/Starmel/OpenSuperWhisper)
- Tags: getting-started
- Published: 2026-07-05

---

**OpenSuperWhisper stores its default preferences in the `AppPreferences` singleton class located in [`OpenSuperWhisper/Utils/AppPreferences.swift`](https://github.com/Starmel/OpenSuperWhisper/blob/main/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`](https://github.com/Starmel/OpenSuperWhisper/blob/main/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:

```swift
let language = AppPreferences.shared.whisperLanguage  // Returns "en"
let engine = AppPreferences.shared.selectedEngine    // Returns "whisper"

```

Override a preference at runtime:

```swift
// 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:

```swift
if !AppPreferences.shared.hasCompletedOnboarding {
    // Show onboarding flow
}

```

As implemented in [`OpenSuperWhisperApp.swift`](https://github.com/Starmel/OpenSuperWhisper/blob/main/OpenSuperWhisperApp.swift), the preferences singleton initializes early in the app lifecycle, while [`Settings.swift`](https://github.com/Starmel/OpenSuperWhisper/blob/main/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.swift`](https://github.com/Starmel/OpenSuperWhisper/blob/main/OpenSuperWhisper/Utils/AppPreferences.swift) using the `AppPreferences` singleton.
- **Property Wrapper Pattern**: Settings use `@UserDefault` and `@OptionalUserDefault` to read from `UserDefaults` with 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`](https://github.com/Starmel/OpenSuperWhisper/blob/main/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`](https://github.com/Starmel/OpenSuperWhisper/blob/main/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`](https://github.com/Starmel/OpenSuperWhisper/blob/main/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.