Zephyr is a Windows AI voice input assistant built with Tauri 2, Rust, Preact, and TypeScript.
It is not a Windows TSF input method. It is a lightweight helper tool: hold a global shortcut, speak, watch a floating preview, and release to deliver the final cloud ASR transcript into the active app.
Zephyr focuses on a fast preview-first voice input flow. The core input path stays native/Rust-side, while the Tauri front end provides settings, history, hotword management, and visual feedback.
- Hold-to-talk global shortcut, default
Ctrl+Alt+Space. - Volcengine bidirectional streaming ASR over WebSocket, default
bigmodel_async. - Preview Mode: partial text appears in a non-focus-stealing floating preinput window.
- Final text is delivered through Unicode
SendInputby default, without modifying the clipboard. - Dynamic shortcut settings with conflict detection.
- Recognition behavior switches for punctuation, ITN, semantic smoothing, and first-character acceleration.
- Local history with search, edit, copy, delete, and clear.
- Hotword and context management with optional DeepSeek-based organization.
- Light ASCII visual settings UI with tray integration.
The current target is Windows only.
Tested development assumptions:
- Windows 10/11
- Rust MSVC toolchain
- Visual Studio Build Tools or Visual Studio Community with C++ desktop workload
- Node.js and npm
git clone https://github.com/zhongwater123/Zephyr.git
cd Zephyr
npm install
npm run tauri devFor Rust-only checks:
cd src-tauri
cargo testFor production build:
npm run package:windowsThe command runs the release gates, builds a current-user NSIS installer, and writes a SHA-256 release manifest next to it. See Windows test installer and upgrades.
Open the settings drawer in the app and configure the recognition service.
Default ASR settings:
- Endpoint:
wss://openspeech.bytedance.com/api/v3/sauc/bigmodel_async - Resource ID:
volc.bigasr.sauc.duration - Model:
bigmodel - Language:
zh-CN - Auth mode: old console App Key + Access Key by default; API Key mode is also supported.
Secrets are stored in the operating system keyring. They are not written to config.json.
See docs/configuration.md and docs/provider-volcengine.md.
Zephyr handles voice audio and recognized text. Some data is sent to external cloud services when the related feature is enabled:
- Audio is streamed to the configured ASR provider during a voice session.
- Final transcripts can be stored locally in
history.dbwhen history is enabled. - History text can be sent to DeepSeek only when the hotword agent is enabled or manually triggered.
See PRIVACY.md before using real personal or sensitive data.
- Architecture
- Development Setup
- Configuration
- Volcengine ASR Provider
- Hotwords And Context
- Troubleshooting
- Contributing
- Security
Issues, bug reports, usability notes, and small focused pull requests are welcome.
Good first areas to help with:
- Windows compatibility and edge-case testing across common apps.
- Volcengine ASR protocol robustness.
- Preview overlay latency and positioning.
- History, hotword, and context-management UX.
- Documentation and setup improvements.
Please avoid committing API keys, personal transcripts, local databases, generated build output, or dependency folders.
Generated and local-only files should not be committed:
node_modules/dist/target/target-check/.vs/sauc_go/sauc_go.zip.env*- logs and temporary files
MIT. See LICENSE.
