Skip to content

Repository files navigation

LocalVoice Notes

LocalVoice Notes is a private macOS menu-bar dictation app. Tap and release the right Option key to start recording, speak in Dutch or English, and tap it again to stop. Transcription runs locally through whisper.cpp; the resulting note is stored on the Mac and copied to the clipboard.

Requirements

  • Apple Silicon Mac running macOS 15 or newer
  • Xcode 26+ (SwiftData's compiler plug-in is not included in Command Line Tools alone)
  • Approximately 600 MB for the speech model
  • Internet access only for the initial build dependency and first-run model download

Build

./scripts/build-app.sh

The build script bootstraps the pinned, checksum-verified whisper.cpp XCFramework into the ignored Vendor directory before compiling.

The assembled app is written to .build/LocalVoice Notes.app. To copy it into Applications:

./scripts/install-app.sh

For a stable Input Monitoring permission, sign with an Apple Development identity:

LOCALVOICE_CODE_SIGN_IDENTITY="Apple Development: Your Name (TEAMID)" ./scripts/build-app.sh

The default build uses an ad-hoc signature and is suitable for local testing, but macOS may ask for Input Monitoring permission again after rebuilding it. The local entitlement permits the bundled, checksum-verified whisper framework to load without an Apple Development Team signature. Remove that entitlement for a properly team-signed distribution build.

First run

  1. Allow microphone access.
  2. Allow Input Monitoring so the app can observe a solo right Option tap.
  3. Download the verified large-v3-turbo-q5_0 model.
  4. Finish setup to enable launch at login.

After the model is installed, recording, transcription, note storage, search, editing, export, and clipboard copying work without a network connection. The app contains no telemetry, cloud sync, update checks, or transcription API integration.

Data and recovery

Notes, the model, and temporary recovery audio live in the app's sandbox container. Audio is deleted only after its transcript has been saved successfully. Failed or interrupted jobs remain visible in the notes window with Retry and Delete controls.

Tests

./scripts/bootstrap-whisper.sh
LOCALVOICE_SDKROOT="$(xcrun --sdk macosx --show-sdk-path)"
env CLANG_MODULE_CACHE_PATH=/tmp/localvoice-clang-cache \
    SWIFTPM_MODULECACHE_OVERRIDE=/tmp/localvoice-swiftpm-cache \
    SDKROOT="$LOCALVOICE_SDKROOT" \
    swift test --disable-sandbox

About

Local speach-to-text Mac app

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages