Floure listens to your mic, transcribes your speech, cleans it up with an LLM, and types it into whatever you're focused on. No cloud required. No account. The default setup runs entirely on your machine.
mic (cpal) → Silero VAD → Parakeet / Whisper (sherpa-onnx)
→ LLM cleanup (local S1-Mini via llama.cpp, or OpenRouter cloud)
→ type into focused window / clipboard
Downloaded on demand from the Models page (resumable, verified — see docs/adr/0003-model-downloads.md).
| Model | Backend | Size | Notes |
|---|---|---|---|
| Parakeet TDT 0.6B v2 (int8) | sherpa-onnx | ~460 MB | Default ASR. Fast English dictation. Recommended. |
| Whisper large-v3-turbo | sherpa-onnx | ~540 MB | Multilingual, high accuracy |
| Whisper base | sherpa-onnx | ~200 MB | Lightweight, any language |
| Silero VAD | sherpa-onnx | ~630 KB | Speech detection, auto-downloaded |
| S1-Mini Q4_K_M | llama.cpp | ~462 MB | Default local LLM for cleanup. Recommended. |
| Gemma 3 1B IT Q4_K_M | llama.cpp | ~806 MB | Alternative local LLM |
Cloud cleanup (optional): OpenRouter (OPENROUTER_API_KEY, default openai/gpt-4o-mini).
Prerequisites: pnpm, Rust toolchain, a mic, and (Linux) PipeWire/PulseAudio.
cd application && pnpm install
pnpm tauri dev # full desktop app (Vite + Rust backend)Useful slices:
cd application && pnpm dev # frontend only
cd application && pnpm build # frontend build
cd application/src-tauri && cargo check # Rust check
cd application/src-tauri && cargo test # Rust tests
cd application && npx vitest run # frontend testsDefault builds link llama.cpp statically with CPU inference and need no Vulkan toolchain — the result is a single self-contained binary. ASR is CPU either way (int8 is already sub-second per utterance).
To offload the local LLM to a GPU, build the Vulkan backend:
cd application && pnpm tauri build -- --features vulkanThat requires a Vulkan toolchain at build time (Vulkan loader + headers, a GPU
with a Vulkan ICD, glslc and SPIRV-Headers). At runtime the device is picked
automatically — discrete NVIDIA → AMD → CPU (application/src-tauri/src/compute.rs) — and can be overridden with FLOURE_COMPUTE=cpu|vulkan and FLOURE_MAIN_GPU=<index>.
| What | Where |
|---|---|
| App config | ~/.config/floure/config.json |
| Transcripts (SQLite + FTS5) | ~/.local/share/floure/history.db |
| Models | ~/.local/share/floure/models/ |
| Data dir override | STT_DATA_DIR env var |
Copy .env.example to .env for API keys and optional overrides.
- Onboarding wizard — system checks, mic setup, model download, permissions
- Live transcription feed — mic level, waveform, push-to-talk (
CommandOrControl+Shift+Space) - Model management — browse, download with progress, status, delete, disk usage
- History — full-text search over past transcripts (SQLite FTS5), recopy, favorites
- Dictionary — custom vocabulary with auto-replacement
- Settings — LLM provider/mode, API keys, ASR profile, language, hotkey
- Insights — usage heatmap, streaks, stats
- Widget mode — compact always-on-top mini window; system tray with start/stop
Transcripts are saved with raw text, cleaned text, LLM mode, provider, model, and timestamp.
- CONTEXT.md — project brief, layout, commands
- docs/adr/ — architecture decisions (native backend, DB path, model downloads)
- docs/ — algorithms and voice research notes
GNU General Public License v2.0 — see LICENSE.
Designed and developed by Akshat Kotpalliwar