返回项目目录
crosswk

crosswk

SayIt

Open-source voice typing for Windows — a Wispr Flow / Superwhisper alternative. Press a shortcut, speak, and AI-polished text lands at your cursor. Local models, your own API keys, or a self-hosted backend.

音频 / 语音asrdictationgguflocal-firstparakeetprivacy
Stars
327
Forks
46
Watchers
327
Issues
1

README

项目介绍

8156 bytes
SayIt # SayIt **Just say it, and write well** Open-source voice typing for Windows. Press a shortcut and speak—SayIt transcribes, cleans up, and inserts polished text wherever your cursor is. [![License: AGPL-3.0](https://img.shields.io/badge/License-AGPL--3.0-blue.svg)](./LICENSE) [![Windows](https://img.shields.io/badge/Platform-Windows-0078D6?logo=windows)](https://github.com/crosswk/SayIt/releases/latest) [![Latest release](https://img.shields.io/github/v/release/crosswk/SayIt?label=release)](https://github.com/crosswk/SayIt/releases/latest) **[Download for Windows](https://github.com/crosswk/SayIt/releases/latest)** · **[Try the web demo](https://sayitapp.site)** · **[简体中文](README.zh-CN.md)**
SayIt in action: pressing the shortcut, speaking, and the cleaned-up text appearing at the cursor *Trigger the shortcut, speak, and the cleaned-up text is typed in at your cursor — no window switching.*

Why SayIt?

Typing is often the slowest part of working with AI. SayIt turns speech into text you can use immediately, while keeping the important choices in your hands:

  • Voice typing anywhere — dictate into editors, chat apps, browsers, and other Windows software.
  • Editable AI cleanup — remove filler words, repair recognition errors, format ideas, or keep a faithful transcript. Every prompt is yours to change.
  • Flexible speech recognition — use a cloud ASR provider, run a local GGUF model on your own GPU, connect to the public trial server, or host your own backend.
  • English and Chinese interface — the UI follows your system language and can be switched at any time.
  • Hotwords and per-app rules — improve names and technical terms, then change cleanup behavior automatically for different apps.
  • Overlay feedback — a small waveform overlay shows recording state and elapsed time, with optional live captions while you speak.
  • Transparent data flow — the app shows which mode is active and where audio and text are processed.
  • Local history and diagnostics — review recordings, re-transcribe them, and collect useful troubleshooting details without guesswork.

Choose how it runs

Mode Best for Data flow
Local mode Privacy and offline use Speech recognition stays on your PC. With AI cleanup off, nothing leaves the device.
Cloud API mode The best balance for personal use Your PC talks directly to the ASR and AI providers you configure. No SayIt server is involved.
Server mode Teams and managed deployments Audio is processed by a SayIt backend you control—or by the public trial server for a quick start.

Local recognition ships seven GGUF models, with GPU acceleration when available: Parakeet Unified EN (fastest and most accurate for English), SenseVoice Small, Fun-ASR Nano, Nemotron 3.5 ASR (32 languages), and three Qwen3-ASR sizes. Cloud recognition supports Doubao, Qwen, Xiaomi MiMo, and Groq Whisper; AI cleanup works with DeepSeek, Qwen, Groq, MiMo, Ollama, and any OpenAI-compatible endpoint.

A closer look

SayIt home screen showing dictation stats and a feedback box *Home — dictation stats, the active shortcut, and a feedback box that carries your last transcript.*
Voice engine settings with Local, Cloud API, and Server mode cards above the model list *Voice engine — choose Local, Cloud API, or Server mode, then download and switch recognition models. Detected GPUs are used automatically.*
AI cleanup settings showing built-in presets and per-app prompt rules *AI cleanup — every built-in preset is editable, and per-app rules can switch presets based on the app you are typing into.*
AI providers grid with measured response times on each model card *AI providers — bring your own keys, add any OpenAI-compatible endpoint, and test round-trip latency on every card.*
History list with search, raw ASR text, timings, and playback controls *History — searchable local records. Expand one to see the raw ASR text, timings, audio playback, and re-transcribe.*
Appearance settings with app themes, waveform themes, overlay width, and a live overlay preview *Appearance — three app themes, waveform styles, overlay width, and live captions with a preview of the overlay.*

Get started

  1. Download the latest Windows installer.
  2. Open SayIt and choose a voice engine. The default public server is enough for a quick trial.
  3. Press the configured shortcut in any app and speak. By default you press once to start and again to finish; hold-to-talk is available too, under a separate shortcut.

For regular use, choose Local mode or add your own cloud provider keys from the in-app settings. The provider console links are available beside each key field.

Self-hosting

The backend combines FastAPI, WebSocket streaming, Qwen3-ASR, and an optional OpenAI-compatible cleanup model. Docker Compose is the recommended deployment path.

git clone https://github.com/crosswk/SayIt.git
cd SayIt/server
cp config.example.yaml config.yaml
cp .env.example .env
# Add your provider and deployment settings to .env/config.yaml
docker compose up -d --build

GPU speech recognition requires an NVIDIA GPU; 16 GB or more of VRAM is recommended for the default server model. See the server guide for configuration, deployment, security, and API details.

Performance reference

Qwen3-ASR-1.7B with vLLM on an AWS EC2 g5.xlarge (NVIDIA A10G 24 GB):

Audio length ASR latency RTF
30 seconds ~0.8 s 0.025
1 minute ~1.6 s 0.026
2 minutes ~2.1 s 0.017
3 minutes ~2.5 s 0.014
5 minutes ~3.0 s 0.010

Development

Desktop client

cd client
npm install
npm run tauri dev

Requirements: Node.js 18+, Rust 1.75+, CMake 3.20+, and the Vulkan SDK. The first native build compiles the C++ speech engine and may take around 20 minutes; later builds use the cache.

On non-English Windows installations, set CL=/utf-8 before building so MSVC reads UTF-8 source files correctly.

Server

cd server
python3 -m venv .venv
source .venv/bin/activate
pip install -r backend/requirements.txt
cd backend
uvicorn app.main:app --port 8000

Requirements: Python 3.10+ and, for GPU inference, an NVIDIA GPU with CUDA.

Project layout

SayIt/
├── client/       # Tauri + React desktop client
├── server/       # FastAPI backend, gateway, web demo, and deployment files
├── docs/         # User guides and images
└── dev-docs/     # Internal development notes

Contributing

Bug reports, focused pull requests, and feature discussions are welcome. Please open a GitHub issue or read the contribution guide before submitting a larger change.

Contributors


crosswk

Claude (Anthropic)

License

GNU Affero General Public License v3.0

You may use, modify, and self-host SayIt. If you distribute a modified version or run it as a network service, the corresponding source must remain available under the same license.