AI-Powered Voice Dictation for Windows — Offline-First, Privacy-Aware, Extensible
SpectraWrite is an offline-first, privacy-aware voice dictation system for Windows that transcribes speech in real time using modern local AI models. By default, speech recognition runs on your device and no audio is sent to cloud services. Optional modules can download models, talk to local-network devices, or send text to configured AI providers when you explicitly enable those features. It features a modular plugin architecture with 26+ built-in modules covering everything from AI text refinement to hardware integration.
SpectraWrite includes an optional hardware companion device (ESP32-S3) called SpectraType that receives transcribed text and emulates a standard USB keyboard. This architecture provides unique advantages:
| Challenge | SpectraWrite + SpectraType Solution |
|---|---|
| Air-gapped systems | Type on machines with no network access |
| Security-locked computers | No software installation required on target |
| Cross-platform compatibility | Works on Windows, Mac, Linux — any USB-capable device |
| KVM-free multi-PC setups | Dictate to multiple machines without switching keyboards |
| Legacy/embedded systems | Voice-enable any device that accepts USB keyboards |
The target machine sees only a standard USB keyboard — completely undetectable and universally compatible.
The main dictation workspace keeps the critical controls close at hand: model readiness, live audio metering, push-to-talk, and the current transcription surface are all visible in one view.
Pad gives longer-form dictation a dedicated workspace, so you can capture notes, drafts, and edits in tabs instead of sending every utterance straight into another application.
- Whisper — OpenAI Whisper via Whisper.net, multiple model sizes (Tiny to Large V3 Turbo), runs 100% locally
- Parakeet — NVIDIA Parakeet TDT ASR via sherpa-onnx, excellent accuracy for English and 25+ European languages
- GPU acceleration — CUDA (Whisper) and DirectML (Parakeet) for real-time performance
- Unified Model Manager — browse, download, and manage models for all backends from one place
- Engine Comparison — side-by-side comparison tool to evaluate accuracy, speed, and quality between engines
- Push-to-Talk with configurable global hotkeys
- Voice Activity Detection (VAD) — Silero neural VAD for hands-free and always-listening modes
- Audio processing pipeline — compression, noise gate, de-esser, high-pass filter, normalisation
- Remote Microphone — wireless audio input from ESP32 and Android devices over WiFi
- Multi-language support with auto-detection
- Voice Replacements — spoken trigger phrases mapped to text (e.g., "new line" → line break, "question mark" → ?)
- Voice Commands — control your computer with voice: launch apps, execute shortcuts, create macros, automate workflows
- Domain Terminology — automatic correction of technical terms for consistent casing and formatting
- AI / LLM integration — Ollama-powered text refinement, grammar correction, and formatting
- Prompt Builder — structured prompt editor with section management, templates, validation, and token counting
- Local typing — transcribed text typed directly into the active application
- Pad — multi-tab text editor for accumulating transcriptions with AI integration, dedicated PTT key, rich text support
- Quick Dictate — floating dictation window for fast voice-to-text input to any application
- Text-to-Speech — offline TTS synthesis via sherpa-onnx for reading back transcriptions, AI responses, and alerts
- Hardware endpoints — send transcriptions to ESP32/Raspberry Pi devices for USB HID typing on remote machines
- Modern WinUI 3 with customisable Acrylic transparency effects
- Horizontal bar mode — compact layout toggled with F11 for minimal screen footprint
- Floating overlay — live transcription feedback visible on top of any application
- Recording indicator — customisable floating indicator with VU meter and pulse animation modes
- Audio visualisations — waveform and spectrogram displays with real-time visual feedback
- Visual effects — animated background effects across weather, space, hypnotic, nature, abstract, and retro categories
- System tray — minimise to tray with quick access context menu
- Sound events — configurable auditory feedback for recording, transcription, errors, and more
- Settings search — find any setting instantly with live search and control highlighting
- Smooth animations — spring-based UI animations (disablable for accessibility)
- Dashboard — local usage statistics with transcription patterns, word counts, and session history
- Diagnostics — real-time performance monitoring, audio buffer statistics, and transcription metrics
- Error reporting — friendly error handler with optional (never automatic) diagnostic report submission
- Offline by default — core dictation works without cloud services
- Optional network features — model downloads, local-network integrations, and cloud AI providers are opt-in
- No automatic telemetry — diagnostic submission is user-initiated only
- HMAC-SHA256 authentication for hardware communication
- Configurable passkeys for remote device trust
- WiFi & Bluetooth connectivity — station mode, AP mode, or BLE
- USB HID keyboard emulation — universal compatibility
- Three typing modes — instant, natural (human-like), typewriter
- Optional OLED display — real-time status and progress
- Multiple simultaneous endpoints — type on several machines at once
- Flutter app for Android — use your phone as a wireless microphone
- WiFi streaming — audio streamed to SpectraWrite for transcription
| Component | Minimum | Recommended |
|---|---|---|
| OS | Windows 10 21H1 (64-bit) | Windows 11 |
| CPU | Intel Core i5 / Ryzen 5 | Intel Core i7 / Ryzen 7 |
| RAM | 8 GB | 16 GB |
| Storage | 4 GB (for models) | SSD recommended |
| GPU | — | NVIDIA RTX 2060+ (CUDA) or DirectML-capable GPU |
| Component | Specification |
|---|---|
| Board | ESP32-S3-DevKitC-1 (recommended) |
| Alternatives | Waveshare ESP32-S3-Zero, Seeed XIAO ESP32S3 |
| USB | Native USB OTG (HID capable) |
| Connectivity | WiFi 802.11 b/g/n, Bluetooth 5.0 |
| Cost | ~$10 USD |
Important: Original ESP32 boards (non-S2/S3) do not have native USB support and cannot function as USB HID keyboards.
- Download the latest release from the Releases page
- Run the x64 installer or extract the x64 portable ZIP
- Launch SpectraWrite
- On first run, select and download a transcription model via the Model Manager
Trust note: Release artifacts are currently intentionally unsigned. Windows may show SmartScreen or reputation prompts the first time you run the installer or app.
Architecture note: Public v1 release artifacts are x64-only.
For detailed installation instructions, see the Installation Guide.
- Click Start or press your Push-to-Talk hotkey (default:
Right Control) - Speak naturally into your microphone
- Watch your words appear in real-time
- Release the hotkey to stop dictation
The transcribed text is automatically typed into the active application.
To enable typing on a separate machine:
- Flash your ESP32-S3 with the SpectraType firmware
- Configure WiFi on the device via the web portal
- Add the endpoint in SpectraWrite Settings → Modules → Remote EndPoints
- Connect the ESP32 to your target machine via USB
- Start dictating — text flows: Your PC → WiFi → ESP32 → USB Keyboard → Target Machine
For step-by-step hardware setup, see the Quick Start Guide.
| Port | Protocol | Direction | Purpose |
|---|---|---|---|
| 80 | HTTP | PC → Device | Primary communication — typing requests, status, configuration portal |
| 80 | WebSocket | PC ↔ Device | Real-time event streaming (at /ws path) |
| 443 | HTTPS | PC → Device | Encrypted alternative to port 80 (requires TLS certificates) |
| 4210 | UDP | PC → Device | Optional low-latency fast path (2–8 ms) |
| 8989 | HTTP | Device → PC | Remote Microphone audio streaming (separate module) |
Port 80 is the standard HTTP port — no port suffix is needed in the Server URL (e.g., http://192.168.1.42).
- Default behavior: Speech recognition, local typing, and core dictation flows run locally.
- Optional internet use: Model downloads, update checks, and cloud AI providers can use the internet when enabled.
- Optional local-network use: Remote EndPoint and Remote Microphone communicate with devices on your LAN.
- Optional Bluetooth use: Remote EndPoint can use Bluetooth transports when configured.
The application UI mirrors this with Works Offline, Internet, Local Network, Bluetooth, and Analytics badges in setup and module management surfaces. Works Offline means the module's core tasks do not require internet access; optional downloads or LAN/Bluetooth integrations are disclosed separately by the other badges.
Unless marked otherwise, built-in modules are part of the supported public v1 surface.
- Experimental in public v1: Voice Commands, Voice Activation
- Feature-level experimental items still called out in-product: Whisper streaming mode and selected advanced visual styles
Experimental modules are included for evaluation, but they are outside the polished v1 support bar and may change more aggressively.
- PRIVACY.md — repo-level privacy and network summary
- SECURITY.md — vulnerability reporting and security notes
- SUPPORT.md — support boundaries and troubleshooting paths
- CHANGELOG.md — release notes and scope notes
SpectraWrite ships with 26+ built-in modules. All modules are optional and can be enabled or disabled individually.
The Module Manager groups modules by category so you can scan capabilities, dependencies, and enablement state without digging through settings pages.
| Module | Description |
|---|---|
| Whisper | Whisper.net backend with CUDA GPU acceleration, models from Tiny to Large V3 Turbo |
| Parakeet | NVIDIA Parakeet TDT ASR via sherpa-onnx with DirectML acceleration |
| Model Manager | Unified model browsing, downloading, and management for all backends |
| Module | Description |
|---|---|
| AI / LLM | Multi-provider AI text processing via Ollama, OpenAI-compatible APIs, and Anthropic Claude |
| Audio Processing | Compression, noise gate, de-esser, high-pass filter, normalisation |
| Neural VAD | Silero-based neural voice activity detection for hands-free modes |
| Voice Replacements | Spoken trigger phrases mapped to text substitutions |
| Domain Terminology | Automatic domain-specific term correction |
| Voice Commands | Voice-controlled app launching, shortcuts, macros, and workflows |
| Module | Description |
|---|---|
| Pad | Multi-tab text editor with AI integration and dedicated PTT key |
| Prompt Builder | Structured prompt editor with templates, validation, and token counting |
| Quick Dictate | Floating dictation window for fast voice-to-text input |
| Text-to-Speech | Offline TTS synthesis via sherpa-onnx |
| Module | Description |
|---|---|
| Overlay | Floating window showing live transcription feedback |
| Indicator | Recording status indicator with VU meter and pulse animation |
| Visualisations | Waveform and spectrogram audio displays |
| Visual Effects | Animated background effects (weather, space, nature, retro, etc.) |
| Animations | Smooth spring-based UI animations |
| Module | Description |
|---|---|
| Dashboard | Local usage statistics and session history |
| Diagnostics | Real-time performance monitoring and transcription metrics |
| Engine Comparison | Side-by-side transcription engine evaluation |
| Error Reporting | Friendly error handling with optional diagnostic reports |
| Sound Events | Configurable auditory feedback for application events |
| System Tray | System tray icon with quick access context menu |
| Module | Description |
|---|---|
| Remote EndPoint | Send transcriptions to ESP32/Raspberry Pi devices via WiFi or Bluetooth |
| Remote Microphone | Wireless audio input from ESP32 and Android devices |
The Endpoints tab gives Remote EndPoint a dedicated control surface for adding devices, checking connection state, and watching health status before you route dictation off-machine.
Modules marked Experimental in the app are shipped in the public build, but they are not treated as part of the polished v1 support bar.
| Guide | Description |
|---|---|
| Quick Start | Get the full system running |
| SpectraWrite Setup | Configure endpoints in the app |
| Guide | Description |
|---|---|
| ESP32 Flashing Guide | Flash SpectraType firmware to your device |
| ESP32 Firmware Guide | Complete firmware documentation |
| OLED Display Setup | Add an optional status display |
| Troubleshooting | Common issues and solutions |
| Guide | Description |
|---|---|
| Remote Mic Overview | Remote microphone system overview |
| Remote Mic Quick Start | Set up wireless audio input |
| ESP32 Mic Setup | Configure ESP32 as a remote microphone |
| Flutter App Guide | Android companion app documentation |
| Remote Mic Architecture | System architecture details |
| Remote Mic Troubleshooting | Common issues and solutions |
| Document | Description |
|---|---|
| EndPoint Protocol Specification | Complete HTTP API reference for SpectraType |
| EndPoint Security Guide | Authentication and best practices |
| EndPoint Network Configuration | WiFi, AP Mode, and Bluetooth setup |
| Remote Mic Protocol | Remote microphone protocol reference |
| Remote Mic Security | Remote microphone security guide |
| Document | Description |
|---|---|
| Module Development Guide | Create custom modules for SpectraWrite |
| Module API Reference | Complete module API documentation |
┌─────────────────────────────────────────────────────────────────────────────┐
│ YOUR WORKSTATION │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ SpectraWrite (Windows) │ │
│ │ ┌───────────┐ ┌──────────────┐ ┌──────────────┐ │ │
│ │ │ Microphone│──▶│ Audio Capture│──▶│ Whisper / │ │ │
│ │ │ 🎤 │ │ (NAudio) │ │ Parakeet │ │ │
│ │ └───────────┘ └──────────────┘ └──────┬───────┘ │ │
│ │ │ │ │
│ │ ┌───────────┐ ┌──────────────┐ │ │ │
│ │ │ Remote │──▶│ Audio Proc. │──────────┘ │ │
│ │ │ Mic 📱 │ │ Pipeline │ │ │
│ │ └───────────┘ └──────────────┘ │ │
│ │ ┌──────────────┐ │ │
│ │ │ Transcribed │ │ │
│ │ │ Text │ │ │
│ │ └──────┬───────┘ │ │
│ │ │ │ │
│ │ ┌────────────────────────────┼────────────────────┐ │ │
│ │ │ │ │ │ │
│ │ ▼ ▼ ▼ │ │
│ │ ┌──────────────────┐ ┌────────────────┐ ┌─────────────┐│ │
│ │ │ Local Typing │ │ WiFi/HTTP to │ │ Pad / Quick││ │
│ │ │ (This Machine) │ │ SpectraType │ │ Dictate ││ │
│ │ └──────────────────┘ └───────┬────────┘ └─────────────┘│ │
│ │ │ │ │
│ └───────────────────────────────────────┼─────────────────────────────┘ │
│ │ │
└──────────────────────────────────────────┼──────────────────────────────────┘
│
│ WiFi / Bluetooth
│ (HTTP/JSON)
▼
┌───────────────────────┐
│ SpectraType Device │
│ (ESP32-S3) │
│ ┌─────────────────┐ │
│ │ HTTP Server │ │
│ │ Request Queue │ │
│ │ Typing Engine │ │
│ │ USB HID Driver │ │
│ └─────────────────┘ │
└───────────┬───────────┘
│ USB Cable
│ (Appears as Keyboard)
▼
┌───────────────────────┐
│ TARGET MACHINE │
│ • Any OS (Win/Mac/ │
│ Linux/Embedded) │
│ • No software needed │
│ • Air-gapped OK │
└───────────────────────┘
- Visual Studio 2022 (17.8+) with:
- .NET 10 SDK
- Windows App SDK
- C++ build tools (for native dependencies)
- Git
- (Optional) NVIDIA CUDA Toolkit 13+ for GPU acceleration
- (Optional) PlatformIO for ESP32 firmware
- (Optional) Flutter SDK for the mobile companion app
git clone https://github.com/BootBlock/SpectraWrite.git
cd SpectraWrite
dotnet restore
dotnet build -c ReleaseThe application builds to !Distribution/ with a flat structure.
cd tools/esp32-spectrawrite
# Choose your board
pio run -e esp32s3-devkitc -t upload # DevKitC-1
pio run -e esp32s3-zero -t upload # ESP32-S3-Zero
pio run -e xiao-esp32s3 -t upload # XIAO ESP32S3For detailed build instructions, see the ESP32 Firmware Guide.
cd tools/spectrawrite-mic
flutter pub get
flutter build apkSpectraWrite/
├── src/ # Windows application source
│ ├── SpectraWrite.UI/ # WinUI 3 application
│ ├── SpectraWrite.Audio/ # Audio capture (NAudio)
│ ├── SpectraWrite.Core/ # Core abstractions and models
│ ├── SpectraWrite.Input/ # Keyboard simulation and hotkeys
│ ├── SpectraWrite.Pipeline/ # Text processing pipeline
│ ├── SpectraWrite.Configuration/ # Settings management
│ ├── SpectraWrite.Modules.Abstractions/ # Module interfaces
│ ├── SpectraWrite.Modules.Loader/ # Dynamic module loader
│ └── ... # Other libraries
├── modules/ # Plugin modules (26+)
│ ├── Module.TranscriptionWhisper/ # Whisper engine
│ ├── Module.TranscriptionParakeet/ # Parakeet engine
│ ├── Module.AiLlm/ # Ollama AI integration
│ ├── Module.Pad/ # Multi-tab text editor
│ ├── Module.VoiceCommands/ # Voice command system
│ ├── Module.EndPoint/ # Remote hardware endpoints
│ ├── Module.RemoteMic/ # Remote microphone input
│ └── ... # Other modules
├── tools/
│ ├── esp32-spectrawrite/ # ESP32 SpectraType firmware
│ └── spectrawrite-mic/ # Flutter mobile companion app
├── docs/ # Documentation
│ ├── guides/endpoint/ # Hardware setup guides
│ ├── guides/remote-mic/ # Remote microphone guides
│ ├── MODULE-DEV-GUIDE.md # Module development guide
│ └── MODULE-API.md # Module API reference
├── tests/ # Unit and UI tests
└── schemas/ # JSON schemas for modules and settings
SpectraWrite is not open for source code contributions. However, the application is built on a modular plugin architecture and contributions in the form of custom modules are welcome.
If you'd like to extend SpectraWrite's functionality, see the Module Development Guide and the Module API Reference to get started building your own modules.
- Whisper.net — .NET bindings for OpenAI Whisper
- sherpa-onnx — NVIDIA Parakeet ASR and text-to-speech
- NAudio — Audio capture library
- Windows App SDK — Modern Windows UI framework
- Ollama — Local LLM runtime
- Silero VAD — Neural voice activity detection
- ESP-IDF & Arduino-ESP32 — ESP32 development
- TinyUSB — USB HID implementation



