export-1781355100956.mp4
Universal voice dictation, 100% local.
Speak into any application — transcription and AI post-processing run on your machine, with no cloud.
Download · User guide · Installation · Contributing · Code of conduct · Security
Calliop is an open-source alternative to Wispr Flow: global dictation, Whisper transcription, and optional AI cleanup — without sending your voice or text to a remote service.
| Calliop | |
|---|---|
| Privacy | Audio and ML inference run locally |
| Integration | Text injection into any Windows application |
| Quality | Whisper (small, distil-fr-dec16) + local Qwen3 for auto-edits |
| Customization | Personal dictionary, snippets, per-app tone, FTS history |
| Transparency | Source code under AGPL-3.0, no account required |
Network usage: only the initial model download (~466 MB) and optional auto-updates use the Internet. Dictation itself works fully offline.
- Global dictation —
Alt + Spaceshortcut (toggle or push-to-talk) in any app - Local transcription — Whisper via whisper.cpp, optional Vulkan GPU acceleration
- AI auto-edits — filler removal, punctuation, and light rephrasing via Qwen3 (llama.cpp sidecar)
- Overlay & tray — visual state indicator, system tray icon, auto-start
- Dictionary & snippets — learned corrections, custom voice shortcuts
- Per-app context — tone adapted to the active app (Slack, email, IDE…)
- History & insights — full-text search, latency, words/min, usage by app
- Bilingual UI — French and English
Windows 10/11 (supported platform in v1)
- Download the installer from GitHub Releases:
Calliop_*_x64-setup.exe(NSIS, recommended) or.msi
- Install WebView2 Runtime if needed.
- Accept the SmartScreen warning (unsigned binaries in v1).
- On first launch, the Whisper model downloads automatically (~466 MB).
Full guide: docs/installation.md
macOS / Linux: experimental artifacts (DMG, AppImage, deb) are provided unsigned and untested for v1 — use at your own risk.
- Launch Calliop — an icon appears in the system tray.
- Press
Alt + Spaceto start dictation (release after 400 ms for push-to-talk mode). - Speak — the overlay shows listening, processing, and injection states.
- Text is inserted into the active application.
Full guide: docs/user-guide.md · Troubleshooting: docs/troubleshooting.md
flowchart LR
subgraph input [Input]
Mic[Microphone]
HK[Global shortcut]
end
subgraph core [Local pipeline]
Audio[Capture + VAD]
STT[Whisper STT]
LLM[Qwen3 auto-edits]
Inject[Text injection]
end
subgraph storage [Local storage]
SQLite[(SQLite)]
end
Mic --> Audio
HK --> Audio
Audio --> STT
STT --> LLM
LLM --> Inject
STT --> SQLite
LLM --> SQLite
| Layer | Technology |
|---|---|
| Desktop shell | Tauri 2 |
| UI | React 19, TypeScript, Tailwind CSS 4 |
| Audio | cpal, VAD |
| STT | whisper-rs (whisper.cpp) |
| LLM | Qwen3 via calliop-llm-worker sidecar (llama.cpp) |
| Injection | Clipboard + keyboard simulation (enigo) |
| Persistence | SQLite (settings, history, dictionary) |
- Rust (stable)
- Node.js 20+
- pnpm 10+
- WebView2 Runtime
- Visual Studio Build Tools — "Desktop development with C++" workload
- CMake 4.x (
winget install Kitware.CMake)
pnpm install
pnpm tauri:devUse
pnpm tauri:dev(notpnpm tauri dev) — the script ensures CMake 4.x is available and builds the LLM sidecar.
From src-tauri/:
cargo run --bin test-audio -- record 3s output.wav
cargo run --bin test-stt -- output.wav
cargo run --bin test-inject -- "Hello, this is a test"
cargo run --bin test-llm -- "uh hello so yeah"pnpm typecheck && pnpm lint
cd src-tauri
cargo fmt --check
cargo clippy --all-targets --all-features -- -D warnings
cargo testpnpm tauri build --features gpuArtifacts land in src-tauri/target/release/bundle/.
src-tauri/src/
audio/ # Microphone capture, VAD
stt/ # Whisper bindings
llm/ # Local post-processing (sidecar)
inject/ # Text injection
hotkey/ # Global shortcuts
store/ # SQLite (config, history)
pipeline/ # Dictation orchestration
src/
components/ # Overlay, settings, onboarding
hooks/
lib/
crates/
calliop-llm-worker/ # llama.cpp sidecar
calliop-prompt/ # LLM prompts
Full roadmap: PLAN.md
| Document | Description |
|---|---|
| User guide | Shortcuts, settings, features |
| Installation | Installers, first launch, uninstall |
| Troubleshooting | Microphone, injection, models, logs |
| STT benchmarks | Whisper accuracy and latency |
| Release v0.1.0 | Release notes |
| Contributing | Workflow, conventions, releases |
Contributions are welcome — please respect the offline-first constraint for the core (no cloud calls for STT, LLM, or injection).
- Fork → branch
feature/short-name - Implement with the checks above
- Open a PR with a clear description and test plan
See CONTRIBUTING.md for details.
- Windows binaries are unsigned (SmartScreen warning)
- ML models download separately on first use
- Auto-updates are enabled by default (disable in Settings → Advanced)
- Official support is Windows only in v1
AGPL-3.0 — Copyright © Calliop Contributors
If you modify Calliop and distribute it (including as a SaaS), you must publish your changes under the same license.