简体中文|English
SayKey is a tool that turns your speech into text. It works fast, accurately, and without the internet. It uses SenseVoice to do this.
- ⚡ Super Fast: Convert speech to text in real-time.
- 🎯 Accurate: Enjoy precise transcriptions.
- 🔒 100% Offline: Your data stays on your device.
- ⌨️ Hotkey Activated: Start dictation with a simple keyboard shortcut.
- ✨ Smart Punctuation: Automatically adds punctuation to your text.
- 🛠️ Customizable: Easy-to-use settings for a personalized experience.
- Download SayKey
Or visit the Releases page and download the latestSayKey.zip. - Extract the
SayKey.zipfile. - Run
SayKey.exe. - If Windows Defender shows "Windows protected your PC":
- Click More info → Run anyway.
- Look for the white capsule-shaped icon above your taskbar.
- Place the text cursor where you want to type.
- Hold
Ctrl+Q, speak, and releaseCtrl+Qto convert speech to text!
For a detailed setup guide, check out the Installation Wiki.
- OS: Windows 10 or later
- Memory: At least 4 GB RAM (8 GB recommended)
- Disk: 1.5 GB free disk space
- CPU: x86-64 CPU with AVX support recommended
See the Installation Guide for the most up-to-date information.
- Make sure
SayKey.exeis running and you see the capsule icon above the taskbar. - Focus any text input (Notepad, Word, browser, chat app, etc.).
- Press and hold
Ctrl+Qto start recording. - Speak clearly into your microphone.
- Release
Ctrl+Q. SayKey will recognize your speech and type the text at the cursor position.
- Right-click the capsule icon.
- Click Microphone.
- Choose the device you want to use.
- Use the settings in the desktop app, or
- Call the HTTP API
POST /set_hotkeyif you are integrating SayKey programmatically.
SayKey is open-source and we welcome contributions.
git clone https://github.com/WenJing95/SayKey.git
cd SayKey- Python 3.10
- Node.js (latest LTS)
- Git
cd backend
cd CT-Transformer-punctuation
pip install -e .
pip install -r requirements.txtStart the backend server:
python main.py --sense-voice=./sherpa-onnx/model.int8.onnx --tokens=./sherpa-onnx/tokens.txtYou should see output similar to:
SayKey is running. Hold ctrl+q to start recording, release to recognize.
Important: Ensure the cursor is in the desired input location before using voice typing.
INFO: Uvicorn running on http://localhost:58652 (Press CTRL+C to quit)
Required:
--tokens: Path to thetokens.txtfile for the speech model.--sense-voice: Path to the SenseVoicemodel.onnx.
Optional:
--num-threads: Number of threads (default:4).--microphone-index: Index of the microphone to use. If not specified, the system default microphone is used.--hotkey: Hotkey combination to start recording (default:ctrl+q).--api-port: Port number for the API server (default:58652).--punc-model-dir: Directory path for punctuation model files (default:./punc-onnx).--host: Host address for the API server (default:localhost).
The backend exposes a small HTTP API on --api-port (default 58652).
Base URL: http://localhost:58652
Health check to verify the backend is alive.
curl http://localhost:58652/pingResponse:
{"status": "alive"}List available audio input devices.
curl http://localhost:58652/list_audio_devicesExample response:
{
"devices": [
{
"index": 0,
"name": "Microphone (Realtek High Definition Audio)",
"is_current": true
},
{
"index": 1,
"name": "Stereo Mix (Realtek High Definition Audio)",
"is_current": false
}
]
}Set the current microphone by index.
curl -X POST http://localhost:58652/set_audio_device \
-H "Content-Type: application/json" \
-d '{"index": 1}'Configure the hotkey used to start and stop recording.
curl -X POST http://localhost:58652/set_hotkey \
-H "Content-Type: application/json" \
-d '{"hotkey": "ctrl+q"}'Retrieve the current hotkey configuration.
curl http://localhost:58652/get_hotkeyExample response:
{"hotkey": "ctrl+q"}cd backend
./build_onefile.batcd frontend
npm install
# Run in development
npm run build
npm start
# Package for distribution
npm run build
npm run electron:build- Copy everything from
backend\dist. - Copy everything from
frontend\release\win-unpacked. - Place them in the same directory.
- Run
SayKey.exe.
Nothing happens when I hold Ctrl+Q.
- Check that SayKey is running (capsule icon is visible).
- Make sure your cursor is in a text field.
- Try switching to another microphone in the tray menu.
Windows says "protected your PC" and blocks the app.
- Click More info → Run anyway if you trust the binary from this repository.
We welcome issues and pull requests.
-
Fork the repository.
-
Create a feature branch:
git checkout -b feature/your-feature
-
Commit your changes and push the branch.
-
Open a Pull Request.
SayKey is MIT licensed. See LICENSE.txt for details.
- SenseVoice for the speech-to-text engine.
- CT-Transformer-punctuation by lovemefan for punctuation capabilities.