Local speech-to-text on hotkeys. Press a hotkey — speak — the text appears in the clipboard and (optionally) is auto-pasted into the active field. Works fully offline on CPU (whisper.cpp), no GPU, and no audio/text is sent anywhere — everything is recognized locally.
C#
3
35 commits
updated Sep 25, 2026
Local speech-to-text on hotkeys. Press a hotkey — speak — the text appears in the clipboard and (optionally) is auto-pasted into the active field.
Works fully offline on CPU (whisper.cpp), no GPU, and no audio/text is sent anywhere — everything is recognized locally.
parakeet-tdt-0.6b-v3
(multilingual, 25 European languages incl. Russian; large-level accuracy at small-model speed;
offline CPU inference via parakeet.cpp).Whisper.net.Runtime.NoAvx runtime).All models are q8-quantized ggml (Q8_0) — considerably smaller in memory and on disk than fp16, at virtually the same quality and speed.
| Size | File on disk | Speed | Quality | Comment |
|---|---|---|---|---|
| Tiny (q8) | ~42 MB | very fast | low | for simple tasks |
| Base (q8) | ~78 MB | fast | medium | a compromise |
| Small (default) (q8) | ~252 MB | medium | high | good RU/EN quality |
| Medium (q8) | ~785 MB | slow | very high | more accurate, slower |
| Large (turbo, q8) | ~834 MB | very slow | maximum | compact, for powerful CPUs |
Models are stored in %LOCALAPPDATA%\VoiceTyper\models and are downloaded once.
In the "Models" section they can be pre-downloaded and deleted from disk (to free up space).
On update, obsolete fp16 and q5 files are automatically removed from disk.
Available when the Parakeet engine is selected in the "Models" section.
Model parakeet-tdt-0.6b-v3 (NVIDIA, CC-BY-4.0), quants from
mudler/parakeet-cpp-gguf:
| Quant | File on disk | Size | Comment |
|---|---|---|---|
| q4_k | tdt-0.6b-v3-q4_k.gguf | ~644 MB | least memory |
| q5_k | tdt-0.6b-v3-q5_k.gguf | ~708 MB | compromise |
| q6_k | tdt-0.6b-v3-q6_k.gguf | ~775 MB | higher accuracy |
| q8_0 (default) | tdt-0.6b-v3-q8_0.gguf | ~897 MB | best accuracy, ~1 GB RAM |
Parakeet v3 auto-detects the language (no language setting needed for it); Whisper remains the default engine. Model weights are not bundled — they are downloaded once from HuggingFace; recognition afterwards is fully offline.
Requires the .NET 10 SDK (download).
# 1) Build the solution (Release)
dotnet build VoiceTyper.slnx -c Release
# 2) Run the tests
dotnet test VoiceTyper.Tests -c Release
dotnet run --project VoiceTyper.App
or the built exe:
VoiceTyper.App\bin\Release\net10.0-windows\VoiceTyper.exe
The repository already contains a built VoiceTyper.App\Native\mc_wasapi.dll (WASAPI capture for
Intel Smart Sound, built with MinGW, statically linked — depends only on system
KERNEL32/ole32/UCRT). It is copied to the output automatically.
If this file is missing — the application still builds, but the native backend is skipped and capture goes through NAudio WASAPI/MME (sufficient for ordinary microphones).
To rebuild mc_wasapi.dll from the mc_wasapi.cpp source (optional, requires MinGW-w64):
g++ -std=c++17 -O2 -shared -static-libgcc -static-libstdc++ -DUNICODE -D_UNICODE `
-I <mingw>\x86_64-w64-mingw32\include mc_wasapi.cpp -o mc_wasapi.dll -lole32 -luuid
dotnet publish VoiceTyper.App -c Release -r win-x64 --self-contained true -o publish
Run publish\VoiceTyper.exe. Requires the VC++ Redistributable.
Ctrl+Alt+SpaceCtrl+Alt+EscapeThe application writes a detailed log to %LOCALAPPDATA%\VoiceTyper\logs\voiceTyper.log
(format yyyy-MM-dd HH:mm:ss.fff [Level] message, errors include a stack trace).
The log is cleared on each launch; at ~1 MB the file is rotated (up to 5 archives voiceTyper.N.log).
Logged: startup, settings, microphones, hotkeys, model downloads, recording states,
recognized text and all errors.
VoiceTyper.slnx
├── VoiceTyper.Core/ # logic without UI: settings, audio (NAudio + native WASAPI),
│ # Whisper (Whisper.net), VAD, noise suppression, recording state machine
├── VoiceTyper.App/ # WPF: settings window (MVVM, section menu), tray, status overlay,
│ # themes, global hotkeys (NHotkey.Wpf), Native/mc_wasapi.dll
└── VoiceTyper.Tests/ # xUnit tests
Settings: %APPDATA%\VoiceTyper\settings.json
Models: %LOCALAPPDATA%\VoiceTyper\models
Local speech-to-text on hotkeys. Press a hotkey — speak — the text appears in the clipboard and (optionally) is auto-pasted into the active field. Works fully offline on CPU (whisper.cpp), no GPU, and no audio/text is sent anywhere — everything is recognized locally.
C#
3
35 commits
updated Sep 25, 2026
Local speech-to-text on hotkeys. Press a hotkey — speak — the text appears in the clipboard and (optionally) is auto-pasted into the active field.
Works fully offline on CPU (whisper.cpp), no GPU, and no audio/text is sent anywhere — everything is recognized locally.
parakeet-tdt-0.6b-v3
(multilingual, 25 European languages incl. Russian; large-level accuracy at small-model speed;
offline CPU inference via parakeet.cpp).Whisper.net.Runtime.NoAvx runtime).All models are q8-quantized ggml (Q8_0) — considerably smaller in memory and on disk than fp16, at virtually the same quality and speed.
| Size | File on disk | Speed | Quality | Comment |
|---|---|---|---|---|
| Tiny (q8) | ~42 MB | very fast | low | for simple tasks |
| Base (q8) | ~78 MB | fast | medium | a compromise |
| Small (default) (q8) | ~252 MB | medium | high | good RU/EN quality |
| Medium (q8) | ~785 MB | slow | very high | more accurate, slower |
| Large (turbo, q8) | ~834 MB | very slow | maximum | compact, for powerful CPUs |
Models are stored in %LOCALAPPDATA%\VoiceTyper\models and are downloaded once.
In the "Models" section they can be pre-downloaded and deleted from disk (to free up space).
On update, obsolete fp16 and q5 files are automatically removed from disk.
Available when the Parakeet engine is selected in the "Models" section.
Model parakeet-tdt-0.6b-v3 (NVIDIA, CC-BY-4.0), quants from
mudler/parakeet-cpp-gguf:
| Quant | File on disk | Size | Comment |
|---|---|---|---|
| q4_k | tdt-0.6b-v3-q4_k.gguf | ~644 MB | least memory |
| q5_k | tdt-0.6b-v3-q5_k.gguf | ~708 MB | compromise |
| q6_k | tdt-0.6b-v3-q6_k.gguf | ~775 MB | higher accuracy |
| q8_0 (default) | tdt-0.6b-v3-q8_0.gguf | ~897 MB | best accuracy, ~1 GB RAM |
Parakeet v3 auto-detects the language (no language setting needed for it); Whisper remains the default engine. Model weights are not bundled — they are downloaded once from HuggingFace; recognition afterwards is fully offline.
Requires the .NET 10 SDK (download).
# 1) Build the solution (Release)
dotnet build VoiceTyper.slnx -c Release
# 2) Run the tests
dotnet test VoiceTyper.Tests -c Release
dotnet run --project VoiceTyper.App
or the built exe:
VoiceTyper.App\bin\Release\net10.0-windows\VoiceTyper.exe
The repository already contains a built VoiceTyper.App\Native\mc_wasapi.dll (WASAPI capture for
Intel Smart Sound, built with MinGW, statically linked — depends only on system
KERNEL32/ole32/UCRT). It is copied to the output automatically.
If this file is missing — the application still builds, but the native backend is skipped and capture goes through NAudio WASAPI/MME (sufficient for ordinary microphones).
To rebuild mc_wasapi.dll from the mc_wasapi.cpp source (optional, requires MinGW-w64):
g++ -std=c++17 -O2 -shared -static-libgcc -static-libstdc++ -DUNICODE -D_UNICODE `
-I <mingw>\x86_64-w64-mingw32\include mc_wasapi.cpp -o mc_wasapi.dll -lole32 -luuid
dotnet publish VoiceTyper.App -c Release -r win-x64 --self-contained true -o publish
Run publish\VoiceTyper.exe. Requires the VC++ Redistributable.
Ctrl+Alt+SpaceCtrl+Alt+EscapeThe application writes a detailed log to %LOCALAPPDATA%\VoiceTyper\logs\voiceTyper.log
(format yyyy-MM-dd HH:mm:ss.fff [Level] message, errors include a stack trace).
The log is cleared on each launch; at ~1 MB the file is rotated (up to 5 archives voiceTyper.N.log).
Logged: startup, settings, microphones, hotkeys, model downloads, recording states,
recognized text and all errors.
VoiceTyper.slnx
├── VoiceTyper.Core/ # logic without UI: settings, audio (NAudio + native WASAPI),
│ # Whisper (Whisper.net), VAD, noise suppression, recording state machine
├── VoiceTyper.App/ # WPF: settings window (MVVM, section menu), tray, status overlay,
│ # themes, global hotkeys (NHotkey.Wpf), Native/mc_wasapi.dll
└── VoiceTyper.Tests/ # xUnit tests
Settings: %APPDATA%\VoiceTyper\settings.json
Models: %LOCALAPPDATA%\VoiceTyper\models