SayWrite


SayWrite — Free Download. Offline Speech to Text

SayWrite is a desktop dictation program that turns spoken English into written text without sending audio to any server. It runs on macOS, Windows, and Linux, and keeps recognition on the local machine. The app captures microphone input, transcribes complete utterances, and inserts the result at the cursor in another application. It also supports local profiles for microphone and copy preferences, an optional offline grammar cleanup step, and a floating recorder window. SayWrite stores drafts and settings as plain files on the computer and does not require accounts, API keys, or transcription subscriptions.

5.0(1 ratings)
File size: 886 MB
The latest version of SayWrite is: 0.1.0
Operating system: Windows
Languages: English
Price: $0.00 USD (Open Source (MIT))
  • Offline speech recognition. SayWrite uses a local speech engine to convert microphone audio into English text. The default engine is an English model with punctuation and capitalization, running through native CPU inference. Recognition happens after the user finishes dictation, so pauses during speech do not create forced sentence breaks. Audio is processed in memory and is not written to disk as a recording. The program works without an internet connection after the speech model has been downloaded and installed.
  • Global recording shortcut. A system-wide keyboard shortcut starts and finishes dictation from another application. The user can open Settings, click the shortcut field, press a key combination, and save it. The shortcut works as a toggle: one press starts recording, another press finishes it. It is shared by all local profiles and remains after restarting the program. If another application or the operating system already owns the combination, SayWrite keeps the previous shortcut.
  • Floating recorder window. The global shortcut opens a compact floating recorder instead of bringing up the full editor. This small window shows recording state and provides an expand button that returns to the main editor. Closing the main window hides SayWrite in the menu bar or system tray. The program exits only through the Quit SayWrite command in that menu. This design keeps dictation available while the user works in another program.
  • Cursor insertion. When dictation finishes, the transcribed text is inserted at the current cursor position in the active application, or it replaces selected text. The editor remains read-only while recording and finishing so the insertion point does not move. This behavior lets the user dictate into a document, message field, or code editor without switching windows manually. The final text is committed once, after all audio chunks are joined.
  • Local profiles. Profiles store a name, microphone choice, automatic-copy preference, and optional grammar-cleanup preference. They are local settings rather than accounts or security boundaries. All profiles share the same editor draft. A profile lets the user switch between different microphones or copy behaviors without reconfiguring the program each time. Profile data is stored in a plaintext local file protected by the operating system account.
  • Automatic copy. An optional setting copies each completed dictation to the clipboard automatically. The user can then paste the text into another application. This option is disabled by default because it replaces the current clipboard contents. It can be enabled per profile in the settings. When grammar cleanup is active, the automatic copy is refreshed after a correction is accepted or after the original wording is restored.
  • Offline grammar cleanup. An optional grammar step runs after transcription using a local instruction model. It is enabled in Settings and does not require an API or a local server. The model is included in packaged builds and can be downloaded for source builds. A conservative filter rejects large rewrites and changes to numbers or negation, but corrections can still be imperfect. If the grammar step fails, the original transcription is kept.
  • Restore original wording. After a grammar correction, the user can undo the last correction and return to the original transcription. This action also refreshes the automatic copy if that option is enabled. The review action remains available until the draft is edited, another dictation starts, or the program closes. This gives the user a way to compare the cleaned text with the raw recognition result before using it.
  • Long recording segmentation. Ordinary dictation stays together until the user finishes, so thinking pauses do not force sentence boundaries. Long recordings are split at a pause after sixty seconds, or at a hard limit of ninety seconds. All chunks are joined and committed once at the end. Very long continuous speech can still produce punctuation artifacts at those split boundaries. This approach balances memory use with natural sentence flow.
  • Local data storage. During development, application data is stored in a local folder inside the project. This includes profiles, the shared transcript, the recording shortcut, and downloaded model files. Packaged builds use the per-user application-data directory for the operating system. Drafts and profiles are plaintext files, protected by the operating system account, and are not encrypted. Model files and local data are excluded from the source archive.
  • Source export and packaging. A source export command creates a versioned ZIP archive with a checksum sidecar. The exporter uses an explicit file allowlist, rejects symbolic links, and includes a per-file checksum manifest. Nothing is uploaded to a hosting service. Local packaging commands create an unpacked application, a DMG, an NSIS installer, or an AppImage for the current platform. Both packaging commands disable publishing.
  • Verification commands. The project includes type checking, linting, unit tests, engine tests, grammar tests, and desktop tests. Engine and desktop tests require downloaded speech models, and the desktop test uses a real Web Audio MediaStream through the application's audio pipeline. Profiles are isolated in a temporary directory during tests, and clipboard contents are restored afterward. These checks support development without claiming production readiness on every platform.

SayWrite was created by Jihad-Ahmed-7252 and is distributed as version 0.1.0. The program is written in JavaScript and TypeScript, using Node.js, Electron, and a browser-based renderer. It builds on native engine packages for macOS, Windows, and Linux, and it uses the sherpa-onnx runtime with an INT8 conversion of an English speech model. The optional grammar step uses a local Qwen2.5 0.5B Instruct model. Development began before the 0.1.0 release and remains local, with no configured publishing to GitHub or a hosting service. The project includes contribution guidance and a release checklist, and it treats public releases, code signing, notarization, and auto-updates as later work.

Alternatives to SayWrite:

HaramLite — Free Download. Remove music from video

HaramLite

HaramLite is a Windows desktop app designed to remove background music and instrumental tracks from video and audio files.
Price: Free   Size: 431 MB   Version: 0.2.2   OS: Windows
VoiceStudio — Free Download. Local voice platform

VoiceStudio

VoiceStudio is a desktop application for voice cloning, video dubbing, dictation, and long-form audio generation that runs entirely on local hardware.
Price: Free   Size: 170 MB   Version: 0.5.2   OS: Windows, Mac OS, Linux