Sagascript

Dictate anywhere. Privately. A lightweight menu bar app for macOS and Windows. Press a hotkey, speak, and text appears in any application. Local transcription powered by Whisper — no cloud, no internet required.
Features
- Push-to-talk dictation -- hold a global hotkey, speak, release to transcribe and paste into any app
- 100% local transcription -- runs Whisper models on-device (Metal/Core ML on macOS) with no data leaving your machine
- Nordic-grade accuracy -- Swedish and Norwegian use KB-Whisper (Swedish National Library) and NB-Whisper (Norwegian National Library), fine-tuned on 50,000+ hours of Nordic speech with 47% fewer errors than generic Whisper
- Privacy by default -- audio is processed in memory and immediately discarded; zero network traffic
- No telemetry or tracking -- no analytics, no usage sharing, no data collection of any kind
- Multi-language -- English, Swedish, and Norwegian with dedicated models; additional languages supported via generic Whisper models
- CLI + GUI -- full CLI for scripting and automation, menu bar app for everyday use
- File transcription -- transcribe audio and video files (MP3, WAV, M4A, FLAC, MP4, MKV, OGG, and more)
- Configurable -- choose your model, language, hotkey, and output behavior
- Cross-platform -- macOS 13+ (Apple Silicon & Intel) and Windows 10+
Building from source
Prerequisites
- macOS: macOS 13.0+ (Apple Silicon or Intel)
- Windows: Windows 10+
- Rust 1.75+ (
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh)
- Node.js 20+ (
brew install node on macOS, or download from nodejs.org on Windows)
- Tauri CLI (
cargo install tauri-cli)
Build and run
git clone https://github.com/Magnus-Gille/sagascript.git
cd sagascript
npm install
cargo tauri dev
Build a release binary
cargo tauri build
On macOS the .app bundle will be in src-tauri/target/release/bundle/macos/. On Windows the installer will be in src-tauri/target/release/bundle/msi/ or src-tauri/target/release/bundle/nsis/.
CLI usage
Sagascript includes a full CLI. After building, the binary is at src-tauri/target/release/sagascript (or use the app bundle).
# Transcribe an audio/video file
sagascript transcribe recording.mp3
# Record from microphone and transcribe
sagascript record
# List available Whisper models
sagascript list-models
# Download a model
sagascript download-model ggml-base.en
# Manage settings
sagascript config list
sagascript config set language sv
sagascript config get hotkey
# Generate shell completions
sagascript completions zsh > ~/.zfunc/_sagascript
# Generate man pages
sagascript manpages --dir /usr/local/share/man/man1
Run sagascript --help for the full list of commands.
Permissions
macOS
Sagascript needs the following permissions (macOS will prompt you on first use):
- Microphone -- for recording audio
- Accessibility -- for pasting transcriptions into the active app
- Input Monitoring -- for the global hotkey
Windows
- Microphone -- for recording audio
Documentation
Contributing
See CONTRIBUTING.md for development setup, code style, and how to submit changes.
Acknowledgments
- whisper.cpp by Georgi Gerganov -- the inference engine that makes local transcription fast
- whisper-rs -- Rust bindings for whisper.cpp
- Tauri -- the framework powering the native app shell
- OpenAI Whisper -- the original speech recognition model
- KB (Kungliga biblioteket / National Library of Sweden) -- Swedish-optimized KB-Whisper models (tiny, base, small, medium, large) by KBLab, used for Swedish transcription
- NB (Nasjonalbiblioteket / National Library of Norway) -- Norwegian-optimized NB-Whisper models (tiny, base, small, medium, large) by NbAiLab, used for Norwegian transcription
- NbAiLab/NPSC -- Norwegian test audio (CC0, Norwegian National Library)
License
MIT