8000 GitHub - futuregerald/openwhispr: Voice-to-text dictation app with local (Nvidia Parakeet/Whisper) and cloud models (BYOK). Privacy-first and available cross-platform. · GitHub
[go: up one dir, main page]

Skip to content
7FFF

About

Voice-to-text dictation app with local (Nvidia Parakeet/Whisper) and cloud models (BYOK). Privacy-first and available cross-platform.

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

1,930 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OpenWhispr

OpenWhispr

License: MIT Platform Version 1.28.0 Build from source No telemetry

Private, on-device voice-to-text dictation and meeting notes — with real speaker diarization.
macOS, Windows, and Linux. Nothing leaves your machine unless you ask it to.


⚠️ THIS IS A FORK — AND IT HAS CHANGED A LOT

Forked from OpenWhispr/openwhispr · 303 commits ahead · 386 files changed · ~52,700 lines added

This is not a mirror and it is not drop-in compatible with upstream's documentation.
Accounts, billing, hosted cloud transcription, and every phone-home call have been removed.
If you want the original, go upstream.


What's different in this fork

Grouped by what it actually changes for you. Everything below is in main.

It is genuinely local now

  • No phone-home, no telemetry. The Better Auth session ping to auth.openwhispr.com, the automatic startup update check, and a Google Fonts fetch are all gone. There is no analytics SDK. Nothing leaves your device unless you opt into a cloud provider yourself.
  • No account, no signup, no billing. The Account, Plans & Billing, Workspace and Pro-upsell sections were removed outright. First run goes straight to on-device transcription.
  • Hosted cloud transcription removed. Speech-to-text offers Local and Self-hosted only. Bring-your-own-key cloud providers are still available for the AI features, strictly opt-in.
  • Cloud note sync removed, including the database columns that backed it.

Real speaker diarization, on-device

This is why the fork exists.

  • FluidAudio as an optional macOS backend — Swift/CoreML running pyannote-community-1 models on the Apple Neural Engine. More accurate and far lower power than the default sherpa-onnx CPU engine. Auto-selected on macOS when installed; falls back to sherpa-onnx automatically everywhere else.
  • A speaker panel that works — rename, bulk-merge, and filter speakers; locked names are no longer overwritten by a later pass.
  • Hear a speaker before you name them — play a few seconds of any speaker, starting from where they actually talk for a while rather than from a half-word.
  • Voice fingerprints across meetings, so the same person keeps their name next time.

Meeting recordings that survive

  • Audio is kept (mic and system, Opus-encoded) so a meeting can be re-processed later.
  • Re-transcribe at high quality on demand, with a diff summary of what changed.
  • Long calls are processed in passes instead of being refused.
  • Welded notes are detected and split — when two meetings ran into one recording, segments are assigned rather than lost, and the app reports which belong to neither.
  • Reprocess old recordings in bulk.

A post-call pipeline you can see and retry

  • Four steps after every call — re-transcribe, classify, title, write notes — with a live indicator showing elapsed time and sub-stages.
  • Retry the step that actually failed, not the whole pipeline.
  • A persisted background job queue, so quitting mid-process no longer loses the work.
  • Meeting-detection health is recorded and surfaced in the UI instead of failing silently.

Meeting notes a local model can actually write

Asking a small local model for a whole write-up in one prompt produces something vague. Instead the app works through the transcript one question at a time — why the meeting was happening, what each person committed to, what was said carefully, which questions never got asked, what could go wrong next — and only then writes the notes section by section, reusing the cached context between passes.

Measured against a reference debrief of a real 35-minute call, the pass-based notes hit 11 of 11 checks where the old single-prompt notes hit 6. Notes cite timestamps you can scan back to, and include a candid read of the conversation rather than only a summary of it.

Meeting types

  • Seven built-in types (Standup, 1:1, Team Sync, Project Sync, Sprint Planning, Architecture Review, Customer Call), each with its own note template — plus a custom type editor.
  • Auto-detected from the transcript, or auto-mapped from the calendar event's title.
  • Regenerate a meeting's notes as a different type at any time.

Local-first defaults

  • NVIDIA Parakeet TDT 0.6B v3 is the default transcription engine — fast, 680 MB, multilingual — and auto-downloads on first run with a progress banner. Whisper is one click away in Settings for noisy audio or other languages.
  • Four Parakeet/Nemotron models, two of them cache-aware streaming — with those, the live preview updates word by word over a persistent stream instead of in 1.5-second chunks.
  • LLM inference defaults to local, with a guided Gemma download when nothing is configured.
  • Provider settings simplified to local and remote rather than a wall of options.
  • A model that cannot fit is refused, not loaded. Before mapping weights the app checks them against what the machine can actually reclaim, and tells you what it needs and what is free — instead of paging the desktop into the ground. macOS only for now, and inert elsewhere.

It speaks your language

  • The interface is translated into 10 languages — English, Spanish, French, German, Portuguese, Italian, Russian, Japanese, and both Simplified and Traditional Chinese.
  • 61 languages for transcription, 59 of them on local Whisper, plus automatic detection.

Your keys stay yours

  • API keys are encrypted at rest through the OS keychain — Keychain on macOS, DPAPI on Windows, libsecret on Linux — rather than sitting in a plaintext .env. (On a Linux box with no keyring available, Electron falls back to plaintext.)
  • Keys are only ever sent to the provider they belong to, and only if you configured one.

Hotkeys that work where Electron's don't

  • Wayland global shortcuts on GNOME, KDE and Hyprland, registered natively through D-Bus, gsettings, KGlobalAccel or hyprctl — Electron's own globalShortcut does not work there.
  • True push-to-talk on Windows via a low-level keyboard hook, including compound hotkeys.
  • Automatic fallback to a working key when the default is already taken.

Other additions

  • Agent web search on a bring-your-own Brave API key.
  • An MCP server, so Claude Desktop or Claude Code can read your notes, transcripts and people — see docs/MCP-SETUP.md.
  • New colour scheme (Silver / Pacific Cyan / Blue Slate).
  • 100 new test files added under test/helpers/ (148 in total, ~1,500 tests) — the fork carries substantially more test coverage than it inherited.

Known limitations

  • No published binaries. Build from source (below). Builds are unsigned and un-notarized.
  • Intel macOS is not supported — the bundled FluidAudio binary is arm64-only.
  • Upstream's docs at docs.openwhispr.com still describe accounts and hosted cloud features that this fork removed. Treat them as a general guide, not as the reference for this build.

What it does

Press a hotkey, speak, and your words appear at your cursor in whatever app you're using. Join a meeting and it records, transcribes, labels who said what, and writes you notes — all on your machine.

Features

  • Voice dictation — a global hotkey to dictate into any app, with automatic pasting
  • AI agent — talk to Claude, GPT, Gemini, Groq, Tinfoil, OpenRouter, or a local model, with a named voice assistant and optional web search
  • Voice agent hotkey — a dedicated hotkey that sends dictation straight to your agent as a command: no wake word, no cleanup pass
  • Meeting transcription — auto-detects Zoom, Teams, Webex and FaceTime calls, with system audio capture and Google Calendar integration
  • Speaker diarization — on-device speaker labelling with voice fingerprints that persist across meetings
  • Notes — folders, full-text and semantic search, AI actions, markdown mirroring to disk
  • Custom dictionary — teach it names, jargon and brand terms it keeps getting wrong
  • Public API & MCP — manage notes and transcriptions programmatically, or connect Claude Desktop / Claude Code to your own notes (setup)
  • 10 interface languages and 61 transcription languages, with automatic detection

Install

There are no published releases for this fork. Build it from source:

git clone https://github.com/futuregerald/openwhispr.git
cd openwhispr
npm install
npm run setup:fluidaudio   # optional, macOS only: the ANE diarization engine
npm run dev

Requirements

Node.js 24+ (pinned in .nvmrc)
npm 11.11.0+ — see below
macOS extras Xcode Command Line Tools (xcode-select --install), only for setup:fluidaudio

The npm floor is not optional. Below 11.11.0, npm silently strips the libc fields from package-lock.json, which is what picks the right Linux native binary — and the stripped lockfile still installs, so nothing catches it. engine-strict turns that into a hard error. Fix with npm i -g npm@11. On Node 25.x use npm@11, not npm@latest — npm 12 doesn't support the 25.x line.

First run starts a local-only onboarding with no account step, and downloads the default Parakeet model (~680 MB).

Build a shareable app (macOS)

npm run build:mac:arm64   # Apple Silicon

prebuild:mac runs first automatically: it compiles the native Swift helpers, downloads the whisper / sherpa-onnx / qdrant binaries, and bundles the FluidAudio engine — so the installed app needs no setup:fluidaudio. Output lands in dist/.

These builds are unsigned and un-notarized (this fork ships no Apple Developer ID), so Gatekeeper blocks the app on first launch. Clear the quarantine flag once:

xattr -dr com.apple.quarantine "/Applications/OpenWhispr.app"

Or right-click the app → Open, or System Settings → Privacy & Security → Open Anyway.

To re-enable real signing and notarization with your own Developer ID, see docs/FORK-SETUP.md.

Documentation

Fork-specific:

Upstream's docs.openwhispr.com covers general usage and platform setup, but describes accounts and cloud features this fork removed.

Tech stack

React 19 · TypeScript · Tailwind CSS v4 · Electron 41 · better-sqlite3 · whisper.cpp · sherpa-onnx · FluidAudio (CoreML) · Qdrant · llama.cpp · shadcn/ui

Contributing

Issues and pull requests are welcome on this repository. If your change isn't fork-specific, consider sending it upstream as well — this fork keeps its changes isolated so upstream updates still merge cleanly.

License

MIT — free for personal and commercial use, same as upstream.

Acknowledgments

Built on top of OpenWhispr by the OpenWhispr team. This fork would not exist without their work.

About

Voice-to-text dictation app with local (Nvidia Parakeet/Whisper) and cloud models (BYOK). Privacy-first and available cross-platform.

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

0