mrrepac199 downloadsRecord voice notes and transcribe them on your device with Whisper. No cloud, no API keys.
Record a voice note in Obsidian and get its text — transcribed on your device by Whisper. No cloud, no API keys, no subscriptions: after the one-time downloads everything works offline.
Русское описание: README.ru.md.
The plugin sets no default hotkeys. The recommended setup is the “Ctrl+Space controls recording” toggle in settings: tap Ctrl+Space to start, tap again to stop — or hold it for push-to-talk, where recording stops and inserts the moment you release. Alternatively, bind your own hotkeys to the commands:
Right-click the mic in the status bar for the same things close at hand: start/stop, cancel the recording, insert the last transcript, browse history.
The plugin works on phones too — with the base model on the CPU by default:
slower than on desktop, but fully offline.
There is no status bar on mobile, so the microphone lives in the left sidebar. For one-gesture recording, bind it to the pull-down: Settings → Mobile → Pull action → “Voice Scribe: Record voice note”, then just swipe down on a note to start.
Auto (default) picks the best model this device can actually run:
large-v3-turbo (~720 MB, the best one);small (~240 MB) — the ceiling of the 32-bit WASM runtime;base (~80 MB) — larger models exhaust WebView memory.You can also pick a model manually. The choice is stored per device and never synced, so your desktop and phone can't overwrite each other's model — each remembers its own. The settings page shows which model and compute device are actually in use on the current device, and why.
On first use the plugin downloads the selected model from Hugging Face and caches it locally; subsequent runs are offline. You can pre-download it via Settings → Prepare model.
Whisper is not a streaming model — it works on a 30-second window and needs a finished chunk of audio. So the Transcribe while recording option (desktop, off by default) splits your speech into phrases at the pauses and transcribes each one while you keep talking. Phrases land where you are dictating as you go, and by the time you stop, only the last one is left to process.
Worth knowing before you turn it on:
Whisper model — Auto (recommended) / tiny / base / small /
large-v3-turbo (desktop, needs a GPU). Bigger is more accurate but slower.
Language — the language you speak, or auto-detect.
Voice punctuation — say “comma”, “period”, “question mark”, “new line”, “new paragraph” (or the Russian «запятая», «точка», «абзац»…) to insert punctuation. Off by default; only standalone command words are replaced.
Replacements — one rule per line, what you hear = what to write. Whisper
mangles names, titles and jargon the same way every time, so it is fixed once:
# a comment
рэп театр = Рэп-театр
обсидиан = Obsidian
э-э =
Whole words only, case-insensitive: рэп will not touch рэпера. A capital
letter on the recognised word carries over to the replacement, so the start of
a sentence stays intact. An empty right side deletes the word — handy for
filler sounds. Where rules overlap the longer one wins, and every fragment is
replaced exactly once (rules never rewrite each other).
Stop after silence — go quiet for 2–8 seconds and the recording stops by itself, inserting the text right away: one keypress instead of two. The count only starts once you have actually said something. If not a single word is heard within 15 seconds of starting, the recording is discarded rather than stopped: no text, no audio file — so a mic left on by accident does not stay on.
Compute device — Auto uses your GPU via WebGPU when available and falls back to CPU (WASM) otherwise.
Microphone — pick an input device (press refresh to reveal device names).
Insert transcript into — the active field, or a new note.
Copy transcript to clipboard — additionally put every transcript into the system clipboard.
Sound feedback — short chimes when recording starts and when the transcript is ready.
Ctrl+Space controls recording — tap to start/stop, hold for push-to-talk.
Transcribe while recording (desktop) — see below.
Voice notes folder — where recordings and transcripts are saved, named
voice-2026-07-09-1530.
Audio file — keep the recording next to the transcript, delete it once the text has been delivered, or never write it at all.
Link the audio in the note — add an ![[…]] embed when a note is created.
Warm up on startup — load the model in the background so the first recording transcribes instantly.
Delete voice notes / Delete downloaded models — housekeeping.
Nothing you record or transcribe ever leaves your device. The plugin downloads only its working parts, each once, from pinned versions:
huggingface.co on first use of each model
(~40–720 MB), then cached: on desktop on disk outside the vault (so sync
never copies gigabytes), on mobile in the app cache.cdn.jsdelivr.net as a fallback) and cached on
disk. On mobile it is loaded from cdn.jsdelivr.net and kept in the WebView
HTTP cache — after a cache eviction it may be downloaded again.No other requests are made, and no telemetry exists.
On desktop the plugin reads and writes exactly two places outside your vault,
both under the OS cache directory (%LOCALAPPDATA%\voice-scribe on Windows,
~/Library/Caches/voice-scribe on macOS, $XDG_CACHE_HOME/voice-scribe on Linux):
models/ — downloaded Whisper models;runtime/ — the ONNX Runtime WASM binary.They live outside the vault on purpose: Obsidian Sync would otherwise copy gigabytes between your devices. Settings show the exact path and offer Delete downloaded models; the runtime can be removed by deleting the folder. Nothing else on your filesystem is touched. On mobile no Node.js API is used at all — caching goes through the browser Cache API.
Inside the vault the plugin only writes to its own plugin folder: the patched
engine loader (ort/), plus asr-worker.js and live-worklet.js when your
security policy refuses to run them from memory.
small model.large-v3-turbo needs a GPU. It cannot run on the CPU: the WASM runtime is
32-bit and cannot allocate its weights, no matter how much RAM you have.MIT