Skip to content

Releases: VasenevEA/FastWord

v0.7.2

Choose a tag to compare

@github-actions github-actions released this 02 Aug 11:14

Full Changelog: v0.7.1...v0.7.2

v0.7.1

Choose a tag to compare

@github-actions github-actions released this 02 Aug 10:05

Full Changelog: v0.7.0...v0.7.1

FastWord 0.6.0

Choose a tag to compare

@VasenevEA VasenevEA released this 22 May 22:01

Highlights

Optional GigaAM-v3 engine for Russian. Sber's MIT-licensed Conformer-CTC model, ~50% lower WER on Russian than Whisper-large-v3. The ~215 MB model downloads on demand into Application Support. Pick it like any other model in Settings → Models — no language auto-routing, no extra toggle.

Other fixes

  • HUD now shows the real sidecar error message instead of the cryptic (SidecarError error 0.) placeholder.

FastWord 0.5.2 — fix insertion in Slack / browsers / Electron

Choose a tag to compare

@VasenevEA VasenevEA released this 19 May 12:29

Fix

Text insertion was failing in Slack, the Comet browser, Threads, Yahoo Finance search — every Chromium/Electron web input.

Root cause: the Accessibility-first path. Chromium/Electron text fields report kAXSelectedTextAttribute as settable and return .success from the set call, but silently drop the write. We treated the insert as done and never fell back to the clipboard, so nothing appeared.

Fix:

  • Dropped the AX-first path entirely. Always use clipboard + synthesised ⌘V — works in native and web/Electron apps alike, and the clipboard is still snapshotted and restored so your data is preserved.
  • Restore delay 250 ms → 700 ms (Electron paste handlers are async and slower).
  • changeCount guard: the previous clipboard is only restored if nothing else wrote to it during the paste window, so we never clobber something you copied mid-dictation.
  • ⌘V posted via the HID tap with a 15 ms key-down/up gap so slow Electron apps register the chord.

FastWord 0.5.1 — system-language default, two-key hotkey

Choose a tag to compare

@VasenevEA VasenevEA released this 13 May 21:33

Two improvements from user reports.

Default to system language

On first launch the transcription language picker now picks your macOS primary language instead of starting on Auto-detect. When you do keep 'Auto-detect' on, the sidecar passes a short Superwhisper-style initial_prompt in the system language so short Russian / Mandarin clips stop getting detected as English.

Two-key hotkey

Settings → Hotkey → 'Use a second key' lets you bind a second modifier. Pick:

  • Either key alone (default) — independent alternative trigger. Useful when switching between two keyboards that have different modifier keys (e.g. external Microsoft keyboard with no ⌘, MacBook internal with no ⌥, and ⌘ already taken by another app).
  • Both keys held together — classic chord shortcut.

FastWord 0.5.0 — VAD-light + transcript cleanup

Choose a tag to compare

@VasenevEA VasenevEA released this 13 May 09:07

Two new toggles in Settings → Transcription (default on):

Skip empty recordings — sidecar pushes whisper.cpp's no_speech_thold so accidental short taps and silent clips are dropped before they hallucinate.

Clean up transcripts — programmatic post-processor strips known YouTube-credit-style hallucinations across EN/RU/ZH ('Subtitles by Amara.org', 'Подписывайтесь на канал', '感谢观看'), collapses repeat loops, removes bracketed non-speech notes ('[Music]', '(шум)'), normalises whitespace, and trims leading punctuation. Guardrail keeps real transcripts safe — over-aggressive cleaning falls back to the original.

FastWord 0.4.3 — mute system audio for browser playback

Choose a tag to compare

@VasenevEA VasenevEA released this 13 May 08:45

New

Settings → Audio → Background audio now has a third option: Mute system audio.

MRMediaRemoteSendCommand only reaches apps registered with the system Now Playing client (Spotify, Apple Music, podcast apps). Browsers like Safari and Chrome don't register YouTube or other HTML5 media — and synthetic NX_KEYTYPE_PLAY events don't reach Safari either. This is a long-standing macOS limitation.

The new option works around it by setting the master output volume to 0 for the duration of the recording and restoring it on stop / cancel / hardware change. It's the only universal mechanism — works for Safari, Chrome, Discord, system sounds, anything that goes through the default output.

Choose your audio handling:

  • Do nothing (default)
  • Pause / Resume player — precise, for Spotify / Music / podcasts
  • Mute system audio — universal, for YouTube in browser / anything else

FastWord 0.4.1 — don't start music from silence

Choose a tag to compare

@VasenevEA VasenevEA released this 12 May 21:07

Fix

The v0.3.0 auto-pause feature used a togglePlayPause command. If your music was already paused when you started dictating, the toggle would start playback — exactly the opposite of what you wanted. The matching toggle on recording end then paused it again, leaving the system in the wrong state.

Now:

  • Explicit play / pause commands via MRMediaRemoteSendCommand instead of toggle.
  • Before pausing, ask MRMediaRemoteGetNowPlayingApplicationIsPlaying whether anything is actually playing. If yes, send pause and remember. If no, leave the system alone.
  • On recording end, send play only if we actually paused something.

Dictating during silence no longer hijacks the now-playing session.

FastWord 0.4.0 — dynamic Whisper model picker

Choose a tag to compare

@VasenevEA VasenevEA released this 12 May 12:33

New — closes #1

Settings → Models now lets you pick which whisper.cpp ggml model FastWord uses.

Curated list of 9 multilingual variants:

Model Size
Whisper Tiny 78 MB
Whisper Base 148 MB
Whisper Small 488 MB
Whisper Medium 1.5 GB
Whisper Large v3 Turbo Q5 (bundled, default) 547 MB
Whisper Large v3 Turbo Q8 874 MB
Whisper Large v3 Turbo (full) 1.6 GB
Whisper Large v3 Q5 1.1 GB
Whisper Large v3 (full) 3.1 GB

The bundled turbo-Q5 stays in the DMG and remains the default. Everything else downloads on demand from huggingface.co/ggerganov/whisper.cpp with a live progress bar into ~/Library/Application Support/FastWord/Models/.

Each row shows an Active / Installed badge. Switching the active model restarts the sidecar transparently. Downloaded models can be deleted; the bundled one and the currently-active one can't.

FastWord 0.3.0 — auto-pause background audio

Choose a tag to compare

@VasenevEA VasenevEA released this 12 May 10:12

New — closes #5

Settings → Audio → Background audio: "Pause / Resume player"

When you start dictating, FastWord pauses whatever is currently playing (Spotify, Music, YouTube in a browser, podcast apps) and resumes it the instant the microphone closes — no waiting for transcription to finish.

Implementation

  • Uses MRMediaRemoteSendCommand from the private MediaRemote.framework (the same path NepTunes / Sleeve / Silicio use). Drives the system 'now playing' session reliably, including for Spotify where the documented CGEvent path silently misses on macOS 12+.
  • NX_KEYTYPE_PLAY system-defined CGEvent remains as a fallback if the private symbol ever gets removed.
  • Resume is gated by a flag so we never start music out of nothing.