Minimal voice typing for desktop.
Hold Ctrl+Shift, speak, release, and Dictate transcribes locally into the active text field. The project is intentionally narrow: fast hold-to-talk dictation with clean model management, low-friction setup, and no extra workflow.
Dictate is currently in beta for its initial open-source release.
Dictate is a Windows-first desktop app built with:
The app is designed around one primary interaction:
Ctrl+Shift.Ctrl+ShiftModels page




.exe from GitHub Releases.Models.Local or Cloud.Local, install the model you want to use.Cloud, connect Groq, Deepgram, AssemblyAI, or OpenRouter with your API key and select a cloud model.Acceleration mode on Auto unless you specifically want to force CPU or GPU.Moonshine models are the easiest local starting point and work without the NVIDIA path.Dictate GPU runtime.%USERPROFILE%\.dictateapp.4 to 5 minutes.1 minute, depending on the model and machine.Groq:
Deepgram:
$200 of free credit: Deepgram PricingAssemblyAI:
$50 in free credits: AssemblyAI SupportOpenRouter:
google/gemini-3.1-flash-lite-preview:nitroCtrl+Shift.Ctrl+Shift.Overview: current model, runtime state, latest transcript, warnings, and readinessHistory: recent transcription jobs and outcomesModels: local vs cloud model source, install state, Groq, Deepgram, AssemblyAI, and OpenRouter connection state, and select/delete actionsSettings: acceleration mode, appearance, paste behavior, and debug flags| Model | Runtime | Size | Notes |
|---|---|---|---|
Moonshine Tiny Streaming | CPU | 176 MB | Fast fallback model for lower-end hardware |
Moonshine Medium Streaming | CPU | 1.06 GB | Balanced default for local CPU dictation |
NVIDIA Parakeet-TDT-0.6B-v3 | NVIDIA GPU | 2.51 GB | Multilingual model with strong GPU accuracy |
NVIDIA Canary-Qwen-2.5B | NVIDIA GPU | 5.12 GB | Larger English model for stronger NVIDIA GPUs |
Cloud transcription is optional and uses your own provider API key.
| Provider | Model | Notes |
|---|---|---|
Groq | whisper-large-v3-turbo | Recommended default for cloud dictation: faster and lower cost |
Groq | whisper-large-v3 | Higher accuracy option with translation support |
Deepgram | nova-3 | Recommended Deepgram default for prerecorded BYOK dictation |
Deepgram | nova-2 | Deepgram compatibility fallback |
AssemblyAI | universal-3-pro | Recommended AssemblyAI default for BYOK dictation with automatic universal-2 fallback |
AssemblyAI | universal-2 | Standalone AssemblyAI fallback for broad language coverage |
OpenRouter | google/gemini-3.1-flash-lite-preview:nitro | Fixed Gemini audio-input path through OpenRouter's Nitro routing |
Auto: prefers CUDA when a working CUDA sidecar runtime is available, otherwise falls back to CPUCPU: forces the CPU sidecar runtimeCUDA: requests the CUDA sidecar runtime and warns if it is unavailableImportant:
4 to 5 minutes to prepare.1 minute before the first transcription is ready.Models page for installed local models.PATHFrom the repository root:
bun install
pwsh -File dictate-app/sidecar/bootstrap.ps1
Optional CUDA runtime setup:
pwsh -File dictate-app/sidecar/bootstrap.ps1 -Runtime cuda
Optional setup for both CPU and CUDA runtimes:
pwsh -File dictate-app/sidecar/bootstrap.ps1 -Runtime both
Recommended development mode:
bun run dev:hmr
This starts:
From the repository root:
bun run typecheck
bun run lint
bun run build:canary
Windows release installer build:
bun run build:canary
bun run build:canary:installer
The maintainer-facing Windows installer is built with Inno Setup as a per-user install under %LocalAppData%\Programs\Dictate. The user-facing installer should be the generated canary installer .exe; Electrobun's canary payload remains the underlying app/update bundle.
By default, Dictate stores model assets under:
%USERPROFILE%\.dictateapp
Key locations:
%USERPROFILE%\.dictateapp\models\huggingface\hub%USERPROFILE%\.dictateapp\models\moonshine%USERPROFILE%\.dictateapp\torch%USERPROFILE%\.dictateapp\providers.jsonYou can override the root with:
DICTATE_HOME
App settings and transcription history are stored in the app user data directory in a local SQLite database. Groq, Deepgram, AssemblyAI, and OpenRouter BYO-key configuration is stored separately under .dictateapp\providers.json.
dictate-app/
src/
bun/ Main process, hotkey handling, runtime orchestration
mainview/ React UI
shared/ Shared model catalog and RPC types
sidecar/ Python transcription worker and runtime bootstrap
v1.Ctrl+V.Launch on startup is implemented on Windows via the current user's Run registry entry and opens tray-first on login.The project is still being hardened for public collaboration. If you open issues or pull requests, include:
See LICENSE.
34 commits
TypeScript
78.3%
CSS
10.2%
Python
6.7%
PowerShell
3.4%
Minimal voice typing for desktop.
Hold Ctrl+Shift, speak, release, and Dictate transcribes locally into the active text field. The project is intentionally narrow: fast hold-to-talk dictation with clean model management, low-friction setup, and no extra workflow.
Dictate is currently in beta for its initial open-source release.
Dictate is a Windows-first desktop app built with:
The app is designed around one primary interaction:
Ctrl+Shift.Ctrl+ShiftModels page




.exe from GitHub Releases.Models.Local or Cloud.Local, install the model you want to use.Cloud, connect Groq, Deepgram, AssemblyAI, or OpenRouter with your API key and select a cloud model.Acceleration mode on Auto unless you specifically want to force CPU or GPU.Moonshine models are the easiest local starting point and work without the NVIDIA path.Dictate GPU runtime.%USERPROFILE%\.dictateapp.4 to 5 minutes.1 minute, depending on the model and machine.Groq:
Deepgram:
$200 of free credit: Deepgram PricingAssemblyAI:
$50 in free credits: AssemblyAI SupportOpenRouter:
google/gemini-3.1-flash-lite-preview:nitroCtrl+Shift.Ctrl+Shift.Overview: current model, runtime state, latest transcript, warnings, and readinessHistory: recent transcription jobs and outcomesModels: local vs cloud model source, install state, Groq, Deepgram, AssemblyAI, and OpenRouter connection state, and select/delete actionsSettings: acceleration mode, appearance, paste behavior, and debug flags| Model | Runtime | Size | Notes |
|---|---|---|---|
Moonshine Tiny Streaming | CPU | 176 MB | Fast fallback model for lower-end hardware |
Moonshine Medium Streaming | CPU | 1.06 GB | Balanced default for local CPU dictation |
NVIDIA Parakeet-TDT-0.6B-v3 | NVIDIA GPU | 2.51 GB | Multilingual model with strong GPU accuracy |
NVIDIA Canary-Qwen-2.5B | NVIDIA GPU | 5.12 GB | Larger English model for stronger NVIDIA GPUs |
Cloud transcription is optional and uses your own provider API key.
| Provider | Model | Notes |
|---|---|---|
Groq | whisper-large-v3-turbo | Recommended default for cloud dictation: faster and lower cost |
Groq | whisper-large-v3 | Higher accuracy option with translation support |
Deepgram | nova-3 | Recommended Deepgram default for prerecorded BYOK dictation |
Deepgram | nova-2 | Deepgram compatibility fallback |
AssemblyAI | universal-3-pro | Recommended AssemblyAI default for BYOK dictation with automatic universal-2 fallback |
AssemblyAI | universal-2 | Standalone AssemblyAI fallback for broad language coverage |
OpenRouter | google/gemini-3.1-flash-lite-preview:nitro | Fixed Gemini audio-input path through OpenRouter's Nitro routing |
Auto: prefers CUDA when a working CUDA sidecar runtime is available, otherwise falls back to CPUCPU: forces the CPU sidecar runtimeCUDA: requests the CUDA sidecar runtime and warns if it is unavailableImportant:
4 to 5 minutes to prepare.1 minute before the first transcription is ready.Models page for installed local models.PATHFrom the repository root:
bun install
pwsh -File dictate-app/sidecar/bootstrap.ps1
Optional CUDA runtime setup:
pwsh -File dictate-app/sidecar/bootstrap.ps1 -Runtime cuda
Optional setup for both CPU and CUDA runtimes:
pwsh -File dictate-app/sidecar/bootstrap.ps1 -Runtime both
Recommended development mode:
bun run dev:hmr
This starts:
From the repository root:
bun run typecheck
bun run lint
bun run build:canary
Windows release installer build:
bun run build:canary
bun run build:canary:installer
The maintainer-facing Windows installer is built with Inno Setup as a per-user install under %LocalAppData%\Programs\Dictate. The user-facing installer should be the generated canary installer .exe; Electrobun's canary payload remains the underlying app/update bundle.
By default, Dictate stores model assets under:
%USERPROFILE%\.dictateapp
Key locations:
%USERPROFILE%\.dictateapp\models\huggingface\hub%USERPROFILE%\.dictateapp\models\moonshine%USERPROFILE%\.dictateapp\torch%USERPROFILE%\.dictateapp\providers.jsonYou can override the root with:
DICTATE_HOME
App settings and transcription history are stored in the app user data directory in a local SQLite database. Groq, Deepgram, AssemblyAI, and OpenRouter BYO-key configuration is stored separately under .dictateapp\providers.json.
dictate-app/
src/
bun/ Main process, hotkey handling, runtime orchestration
mainview/ React UI
shared/ Shared model catalog and RPC types
sidecar/ Python transcription worker and runtime bootstrap
v1.Ctrl+V.Launch on startup is implemented on Windows via the current user's Run registry entry and opens tray-first on login.The project is still being hardened for public collaboration. If you open issues or pull requests, include:
See LICENSE.
34 commits
TypeScript
78.3%
CSS
10.2%
Python
6.7%
PowerShell
3.4%