
VoxSafe-Offline Transcription
Private Voice Notes.
Price history
About
What's New in VoxSafe
1.4
August 20, 2026
VoxSafe 1.3 → 1.4: Feature Summary Version 1.4.0 brings a major diarization rewrite (sherpa-onnx), configurable recording/transcription settings, and advanced UI. Summary: 59 files changed; +3,101/-3,419 lines. ## NEW FEATURES 1. Speaker diarization rewritten with sherpa-onnx Replaced the old MFCC/ECAPA-based native module with a new voxsafe-sherpa-diarization module (pyannote segmentation + CAM++ embeddings via extractEmbeddings). New segment-based diarization pipeline: analyzeDiarizationFromSegments + identifySpeakers maps cluster centroids to saved speaker profiles (voiceprint matching). Added build scripts (build-sherpa-onnx-ios.sh) and Python verification (verify_sherpa_diarization.py). 2. Configurable Advanced Settings (new “Advanced” section) Recording auto-save interval (15/30/60 s) — replaces hardcoded 30 s. Transcription chunk size (15/30/60 s) — replaces hardcoded 30 s. Speaker sensitivity threshold (high/medium/low) — replaces hardcoded 0.5. All persisted via SecureStore; loaded at app startup. 3. Settings UI overhaul ## MODIFICATIONS HomeScreen: switched to analyzeDiarizationFromSegments; voiceprint matching only when profiles exist; added processing indicator, onNavigateSettings prop; upsertTranscriptSegments replaces insertTranscript. DetailScreen: transcript now merges multiple segments into one when no diarization speaker labels exist (prevents split artifacts). TranscribeService: chunk size is now configurable; unified speaker-diarization entry point (applySpeakerDiarization); uses computeHardBoundaries; removed analyzeDiarizationFull and mergeDiarizationWithSegments imports. RecordingService: recording persistence hardening — copy-to-persistent with periodic save (configurable interval), WAV header repair (fixWavHeader/findWavDataOffset), crash/kill recovery, persistent URI tracking, transcript audio URI linkage. WhisperService: model size verification rejects truncated downloads (95% threshold). SettingsScreen: +270 lines — Advanced section (3 parameter pickers), green privacy card, membership card, soft-sell banner. RecordButton/RecordingRow: icon-first action layout; RecordingDatabase +25; TranscriptDatabase +44 (upsert support). i18n: +39 keys each in en/zh (paywall, trial, advanced settings, privacy, membership); App.tsx wrapped with EntitlementProvider; PaywallScreen rendered at root with lock mode; all settings loaded at startup. app.json: +6 config changes; .gitignore: +5 entries (model binaries/artifacts). ## DELETIONS Entire voxsafe-diarization native module (old MFCC/ECAPA: 1,072-line Swift, 84 MB ONNX model, mlpackage, sb_cache). Entire voxsafe-speech-stream module (521-line Swift streaming speech recognition). SpeakerEmbeddingService and StreamingTranscribeService (superseded by sherpa-onnx pipeline); all streaming-transcription code paths removed — app now uses chunked Whisper transcription exclusively. Fixed a cross-repo typo (docslens → doclens) in FamilyLinkService and FeedbackService. Net result: 1.4 is a cleaner, monetized app with on-device voiceprint speaker identification, resilient recording persistence, and user-tunable transcription parameters.
More







