No description
  • Swift 97.4%
  • Shell 1.3%
  • Python 1.3%
Find a file
Vadym Samoilenko a3529761c6 fix(audio): use AVAssetReaderAudioMixOutput(nil) + manual WAV write to fix paramErr(-50)
AVAssetReaderAudioMixOutput and AVAssetReaderTrackOutput with explicit PCM
settings both trigger paramErr (-50) inside AVFoundation in signed binaries.
Root cause: combined reader+writer setup causes internal audio converter conflict.

Fix: read via AVAssetReaderAudioMixOutput(nil) which returns native decoded PCM,
then write WAV header + Int16 data manually — no AVAssetWriter involved.
Includes linear-interpolation resampler for files not at 16kHz.
2026-06-16 23:49:44 +01:00
dist fix(audio): use AVAssetReaderAudioMixOutput(nil) + manual WAV write to fix paramErr(-50) 2026-06-16 23:49:44 +01:00
Docs chore: initial commit — baseline before audit fixes 2026-06-16 19:00:11 +01:00
output/imagegen chore: initial commit — baseline before audit fixes 2026-06-16 19:00:11 +01:00
Packaging feat: onboarding wizard, diagnostics, queue serialization, streaming progress 2026-06-16 21:12:24 +01:00
Scripts feat(diarization): native MFCC-based speaker recognition engine 2026-06-16 21:30:47 +01:00
Sources/LocalWhisper fix(audio): use AVAssetReaderAudioMixOutput(nil) + manual WAV write to fix paramErr(-50) 2026-06-16 23:49:44 +01:00
Tests/LocalWhisperTests fix(audio): use AVAssetReaderAudioMixOutput(nil) + manual WAV write to fix paramErr(-50) 2026-06-16 23:49:44 +01:00
Vendors feat(diarization): pyannote.audio backend for 5+ speaker diarization 2026-06-16 20:01:52 +01:00
.gitignore chore: initial commit — baseline before audit fixes 2026-06-16 19:00:11 +01:00
CLAUDE.md chore: initial commit — baseline before audit fixes 2026-06-16 19:00:11 +01:00
Package.swift chore: initial commit — baseline before audit fixes 2026-06-16 19:00:11 +01:00
README.md chore: initial commit — baseline before audit fixes 2026-06-16 19:00:11 +01:00

LocalWhisper

Local-first macOS transcription app built with SwiftUI and whisper.cpp.

Current Status

  • Native macOS SwiftUI shell.
  • Local file transcription through ffmpeg and whisper-cli.
  • Metal-enabled whisper.cpp backend.
  • Meeting detection banner with developer bypass mode.
  • Permission state dashboard.
  • Model manager shell.
  • Queue, history and transcript detail views.
  • Swift Testing coverage for parser, diarization mapping and bypass detector.

Build

cd /Users/ai_leed/Documents/Projects/LocalWhisper
DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer swift build

Test

cd /Users/ai_leed/Documents/Projects/LocalWhisper
DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer swift test

Run With Developer Permission Bypass

cd /Users/ai_leed/Documents/Projects/LocalWhisper
LOCALWHISPER_BYPASS_PERMISSIONS=1 DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer swift run LocalWhisper

Bypass mode only bypasses LocalWhisper's internal workflow gates. It does not grant macOS Microphone, Screen Recording, Accessibility or Calendar permissions.

Build App Bundle

cd /Users/ai_leed/Documents/Projects/LocalWhisper
./Scripts/build_app.sh

The app bundle is created at:

/Users/ai_leed/Documents/Projects/LocalWhisper/dist/LocalWhisper.app

Smoke-run the built app with developer bypass:

cd /Users/ai_leed/Documents/Projects/LocalWhisper
LOCALWHISPER_BYPASS_PERMISSIONS=1 dist/LocalWhisper.app/Contents/MacOS/LocalWhisper

Local Whisper Backend

Expected files:

  • Vendors/whisper.cpp/build/bin/whisper-cli
  • Vendors/whisper.cpp/models/ggml-base.bin
  • /opt/homebrew/bin/ffmpeg

Rebuild backend:

cd /Users/ai_leed/Documents/Projects/LocalWhisper/Vendors/whisper.cpp
cmake -B build -DCMAKE_BUILD_TYPE=Release -DGGML_METAL=ON
cmake --build build --config Release -j
./models/download-ggml-model.sh base