wookat/speaktype

Hold a key, speak, release — your words land at the cursor in any app. Open-source, local-first AI voice typing for Windows (macOS preview): offline SenseVoice / Parakeet / Whisper, hands-free mode, optional cloud engines, a dictionary that learns from your edits, and your phone as a microphone.

7

stars

479

commits

TypeScript

primary language

Sep 9, 2026

updated

speaktype.zalize.com
accessibility
asr
chinese
cross-platform
dictation
electron
hands-free
macos
offline-first
open-source
parakeet
sensevoice
speech-recognition
speech-to-text
voice-input
voice-typing
whisper
windows
Browse cluster: Whisper Speech Recognition & Deployment

README

SpeakType logo

SpeakType

You speak, it types — open-source AI voice typing, into any app.

Hold a key, talk, release — the words land at your cursor.
Recognition engine, AI polishing and hotword correction are all yours to configure; keys and audio never leave your control.

License: MIT Platform Release i18n PRs Welcome

⬇ Download · 🌐 Website · 简体中文 · Report an issue · Dev docs

SpeakType demo — hold a key, speak, and the words land at your cursor SpeakType home

✨ Why SpeakType

Most AI dictation tools are closed source, or route your voice through the vendor's own servers. SpeakType flips that:

🔓 Fully open source (MIT)Protocols, correction algorithms, UI — every line is readable, hackable, self-hostable
🛡️ No backend of its ownRuns no cloud service; your audio goes only to the recognition service you choose and configure — or stays entirely offline
🧩 Everything pluggableRecognition engine, polishing model, hotword dictionary, persona styles, hotkeys: all yours
📱 Your phone as the microphoneDesktop with no mic? Scan a QR code and talk into your phone — LAN direct, or through a relay you can self-host

🎬 Core experience

🎙️ Push to talkHold RightCtrl (any key or mouse side button, recordable), live captions stream as you speak, release to type into any Windows app
Hands-free modeTap Alt+Q to start, auto-stops on silence — great for long dictation
🎭 PersonasAlt+1..9 to switch: default / auto-translate / report-to-boss / CLI / custom prompt — and optionally switch automatically per foreground app
📈 Gets better as you use itFix a word by hand after it lands and SpeakType learns it into your dictionary — the same mistake won't happen twice
📖 Hotword correctionAdd names and product terms; homophone and near-homophone errors are fixed locally via pinyin matching
✍️ Select and rewriteSelect text, hold F8 and say "translate to English" / "make it formal" — the selection is replaced in place
🧠 Enhanced voice detectionOptional Silero VAD neural network (~35MB, on-device) for accurate auto-stop and hallucination filtering in noise
🔁 Retryable failuresFailed recordings are kept locally (max 20 clips / 7 days / 50MB, can be disabled); retry from History without re-speaking
🌗 Dark modeFollows the Windows light/dark setting in real time, or force light/dark in Settings
🎵 File transcriptionDrop an audio/video file (mp3, wav, m4a, mp4… up to 3h) → offline segmented transcript with timestamps → export TXT / SRT
Personas

🎛️ Recognition engines (pick one, switch anytime)

Recognition settings
  1. Built-in offline recognition (default, recommended) — one-click model download inside the app: SenseVoice-Small for Chinese/English/Japanese/Korean/Cantonese (~0.27s per utterance, punctuation included), NVIDIA Parakeet TDT 0.6B v3 for the highest English + 25 European language accuracy, or whisper.cpp (tiny/base/small). No network, no account, no keys.
  2. Any OpenAI-compatible /audio/transcriptions API — Base URL + API key + model name. Presets for OpenAI Whisper, Groq (free tier), Fireworks, Mistral Voxtral, SiliconFlow and Alibaba Bailian, with a connection test.
  3. No-API-key web providers — ChatGPT web transcription (a free OpenAI account works) or Doubao voice, both reusing a session you sign into yourself inside the app. These use undocumented endpoints, are off by default, and may break or conflict with those services' terms — the account risk is yours to judge. See DISCLAIMER.md.

AI polishing likewise accepts any OpenAI-compatible chat endpoint (OpenAI, Google Gemini's OpenAI-compatible endpoint, Groq, DeepSeek, Zhipu GLM-4-Flash, Kimi, Qwen, or a local Ollama / LM Studio endpoint — for local endpoints the API key can be left empty). Without one, a local cleanup pass still handles self-corrections ("5pm — no, 6pm" → "6pm").

📦 Download & install

PlatformDownloadStatus
Windows 10/11 x64SpeakType-Setup-0.17.0.exe (~98MB)✅ Stable
Windows portableSpeakType-0.17.0-portable.exe (~87MB)✅ Stable
Android (phone as microphone)SpeakType-0.17.0.apk✅ Available
macOS (Apple Silicon / Intel)Platform layer merged; installer pending a macOS build environment🚧 In progress

Latest release: https://github.com/wookat/speaktype/releases/latest · Website: https://speaktype.zalize.com

Or install via Scoop:

scoop bucket add speaktype https://github.com/wookat/scoop-speaktype
scoop install speaktype
  1. Install (if SmartScreen objects, click "More info → Run anyway"; the installer is not commercially signed).
  2. Settings → Speech → Built-in offline → download a model (or fill in your own API key).
  3. Put the cursor in any input field, hold RightCtrl, speak, release.

🔒 Privacy boundary

  • SpeakType has no servers — it collects and uploads nothing.
  • Audio goes only to the service you configured; in offline mode it never leaves your machine.
  • The "learn from my edits" comparison happens entirely on your machine.
  • API keys, history and failed recordings live only in %APPDATA%\SpeakType.
  • No third-party credentials are bundled in this repository.

🌏 Internationalization

Simplified Chinese, Traditional Chinese, English, Japanese and Korean built in (follows system or manual, applies instantly); the locale architecture welcomes more community additions.

Settings

🛠️ Contributing

cd desktop
npm install
npm run dev        # dev mode
npm run typecheck
npm run pack       # NSIS installer → release/

Stack: Electron + React 19 + Tailwind 4 + lucide-react; global hotkeys via uiohook-napi; typing via koffi SendInput; offline recognition via SenseVoice / Parakeet (sherpa-onnx) / whisper.cpp; enhanced VAD via Silero + onnxruntime; phone microphone via a Cloudflare Worker relay you can self-host. See desktop/README.md.

An earlier Chrome extension form lives in this repo too.

Issues and pull requests welcome — see CONTRIBUTING.md.

📄 License

MIT © wookat & SpeakType contributors

SpeakType is an independent open-source project, unaffiliated with OpenAI, Google, ByteDance, Zhipu or any other vendor. The no-API-key providers reuse a login session you create yourself against undocumented endpoints, which may not comply with those services' terms; the account risk is yours to judge. Prefer the built-in offline engine or your own API key if unsure. See DISCLAIMER.md.

Contributors

wookat

29 commits

wookat/speaktype

Hold a key, speak, release — your words land at the cursor in any app. Open-source, local-first AI voice typing for Windows (macOS preview): offline SenseVoice / Parakeet / Whisper, hands-free mode, optional cloud engines, a dictionary that learns from your edits, and your phone as a microphone.

7

stars

479

commits

TypeScript

primary language

Sep 9, 2026

updated

speaktype.zalize.com
accessibility
asr
chinese
cross-platform
dictation
electron
hands-free
macos
offline-first
open-source
parakeet
sensevoice
speech-recognition
speech-to-text
voice-input
voice-typing
whisper
windows
Browse cluster: Whisper Speech Recognition & Deployment

README

SpeakType logo

SpeakType

You speak, it types — open-source AI voice typing, into any app.

Hold a key, talk, release — the words land at your cursor.
Recognition engine, AI polishing and hotword correction are all yours to configure; keys and audio never leave your control.

License: MIT Platform Release i18n PRs Welcome

⬇ Download · 🌐 Website · 简体中文 · Report an issue · Dev docs

SpeakType demo — hold a key, speak, and the words land at your cursor SpeakType home

✨ Why SpeakType

Most AI dictation tools are closed source, or route your voice through the vendor's own servers. SpeakType flips that:

🔓 Fully open source (MIT)Protocols, correction algorithms, UI — every line is readable, hackable, self-hostable
🛡️ No backend of its ownRuns no cloud service; your audio goes only to the recognition service you choose and configure — or stays entirely offline
🧩 Everything pluggableRecognition engine, polishing model, hotword dictionary, persona styles, hotkeys: all yours
📱 Your phone as the microphoneDesktop with no mic? Scan a QR code and talk into your phone — LAN direct, or through a relay you can self-host

🎬 Core experience

🎙️ Push to talkHold RightCtrl (any key or mouse side button, recordable), live captions stream as you speak, release to type into any Windows app
Hands-free modeTap Alt+Q to start, auto-stops on silence — great for long dictation
🎭 PersonasAlt+1..9 to switch: default / auto-translate / report-to-boss / CLI / custom prompt — and optionally switch automatically per foreground app
📈 Gets better as you use itFix a word by hand after it lands and SpeakType learns it into your dictionary — the same mistake won't happen twice
📖 Hotword correctionAdd names and product terms; homophone and near-homophone errors are fixed locally via pinyin matching
✍️ Select and rewriteSelect text, hold F8 and say "translate to English" / "make it formal" — the selection is replaced in place
🧠 Enhanced voice detectionOptional Silero VAD neural network (~35MB, on-device) for accurate auto-stop and hallucination filtering in noise
🔁 Retryable failuresFailed recordings are kept locally (max 20 clips / 7 days / 50MB, can be disabled); retry from History without re-speaking
🌗 Dark modeFollows the Windows light/dark setting in real time, or force light/dark in Settings
🎵 File transcriptionDrop an audio/video file (mp3, wav, m4a, mp4… up to 3h) → offline segmented transcript with timestamps → export TXT / SRT
Personas

🎛️ Recognition engines (pick one, switch anytime)

Recognition settings
  1. Built-in offline recognition (default, recommended) — one-click model download inside the app: SenseVoice-Small for Chinese/English/Japanese/Korean/Cantonese (~0.27s per utterance, punctuation included), NVIDIA Parakeet TDT 0.6B v3 for the highest English + 25 European language accuracy, or whisper.cpp (tiny/base/small). No network, no account, no keys.
  2. Any OpenAI-compatible /audio/transcriptions API — Base URL + API key + model name. Presets for OpenAI Whisper, Groq (free tier), Fireworks, Mistral Voxtral, SiliconFlow and Alibaba Bailian, with a connection test.
  3. No-API-key web providers — ChatGPT web transcription (a free OpenAI account works) or Doubao voice, both reusing a session you sign into yourself inside the app. These use undocumented endpoints, are off by default, and may break or conflict with those services' terms — the account risk is yours to judge. See DISCLAIMER.md.

AI polishing likewise accepts any OpenAI-compatible chat endpoint (OpenAI, Google Gemini's OpenAI-compatible endpoint, Groq, DeepSeek, Zhipu GLM-4-Flash, Kimi, Qwen, or a local Ollama / LM Studio endpoint — for local endpoints the API key can be left empty). Without one, a local cleanup pass still handles self-corrections ("5pm — no, 6pm" → "6pm").

📦 Download & install

PlatformDownloadStatus
Windows 10/11 x64SpeakType-Setup-0.17.0.exe (~98MB)✅ Stable
Windows portableSpeakType-0.17.0-portable.exe (~87MB)✅ Stable
Android (phone as microphone)SpeakType-0.17.0.apk✅ Available
macOS (Apple Silicon / Intel)Platform layer merged; installer pending a macOS build environment🚧 In progress

Latest release: https://github.com/wookat/speaktype/releases/latest · Website: https://speaktype.zalize.com

Or install via Scoop:

scoop bucket add speaktype https://github.com/wookat/scoop-speaktype
scoop install speaktype
  1. Install (if SmartScreen objects, click "More info → Run anyway"; the installer is not commercially signed).
  2. Settings → Speech → Built-in offline → download a model (or fill in your own API key).
  3. Put the cursor in any input field, hold RightCtrl, speak, release.

🔒 Privacy boundary

  • SpeakType has no servers — it collects and uploads nothing.
  • Audio goes only to the service you configured; in offline mode it never leaves your machine.
  • The "learn from my edits" comparison happens entirely on your machine.
  • API keys, history and failed recordings live only in %APPDATA%\SpeakType.
  • No third-party credentials are bundled in this repository.

🌏 Internationalization

Simplified Chinese, Traditional Chinese, English, Japanese and Korean built in (follows system or manual, applies instantly); the locale architecture welcomes more community additions.

Settings

🛠️ Contributing

cd desktop
npm install
npm run dev        # dev mode
npm run typecheck
npm run pack       # NSIS installer → release/

Stack: Electron + React 19 + Tailwind 4 + lucide-react; global hotkeys via uiohook-napi; typing via koffi SendInput; offline recognition via SenseVoice / Parakeet (sherpa-onnx) / whisper.cpp; enhanced VAD via Silero + onnxruntime; phone microphone via a Cloudflare Worker relay you can self-host. See desktop/README.md.

An earlier Chrome extension form lives in this repo too.

Issues and pull requests welcome — see CONTRIBUTING.md.

📄 License

MIT © wookat & SpeakType contributors

SpeakType is an independent open-source project, unaffiliated with OpenAI, Google, ByteDance, Zhipu or any other vendor. The no-API-key providers reuse a login session you create yourself against undocumented endpoints, which may not comply with those services' terms; the account risk is yours to judge. Prefer the built-in offline engine or your own API key if unsure. See DISCLAIMER.md.

Contributors

wookat

29 commits

Languages

TypeScript

98.0%