Skip to content

Releases

v0.8.1 - Transcription accuracy and smarter cleanup

Choose a tag to compare

@willbilec willbilec released this 27 Aug 20:14

Transcription accuracy

  • Correctly maps the selected Windows microphone and preserves its native capture rate.
  • Keeps Groq's complete top-level transcript authoritative.
  • Adds confidence-gated alternate decoding for short dictation when auto-retry is enabled.
  • Compacts long internal silence before upload to reduce Whisper repetition and hallucination loops.

Smarter cleanup

  • Moderate cleanup understands explicit repairs such as "I mean," "sorry," "or rather," and "scratch that."
  • Adds structured positive and negative examples for GPT-OSS and Gemini.
  • Allows only bounded, validated self-corrections and small function-word grammar repairs; unsafe paraphrases still fall back to the raw transcript.

Validation

  • 248 automated tests pass.
  • The add-on manifest is version 0.8.1 and the package was inspected for required files and portable ZIP paths.

v0.8.0 — Accuracy and reliability

Choose a tag to compare

@willbilec willbilec released this 23 Aug 23:46

Accuracy first

  • Adds a deterministic cleanup-fidelity gate. Meaning-changing edits to openings, pronouns, negation, modality, certainty, conditionals, and excessive lexical wording are rejected in favor of the raw Whisper transcript.
  • Prevents failures such as Do some research becoming I should do some research.
  • Uses temperature 0 for Groq and Gemini cleanup.
  • Defaults new configurations to full whisper-large-v3 and an empty prompt slot.
  • Makes Whisper segment filtering conservative so a single unusual diagnostic cannot erase real speech.

Audio and reliability

  • Adds Windows Core Audio capture through vendored SoundCard, CFFI, and NumPy dependencies, with safe PortAudio fallback.
  • Adds microphone pre-roll, silence trimming, fallback-microphone safeguards, stale-device protection, and recorder shutdown hardening.
  • Adds connection reuse/warm-up, faster text insertion, clipboard restoration fixes, and a reliable add-on packaging path.

Validation

  • 227 automated tests pass.
  • The packaged add-on was inspected for its manifest, plug-in entry point, documentation, and portable forward-slash ZIP paths.

Download the .nvda-addon file below, open it with NVDA, and restart NVDA when prompted.

v0.7.1 - Cleanup ASR mishearing license + speedup

Choose a tag to compare

@willbilec willbilec released this 06 Jul 02:46

v0.7.1 - Cleanup ASR mishearing license + speedup

Highlights

  • Moderate cleanup now fixes obvious ASR mishearings — we → you when addressing a single listener, tensor flow → TensorFlow, post gress SQL → PostgreSQL, their/there/they're homophone swaps. The previous prompt was so restrictive that the model had nothing actionable to fix on Whisper's already-clean output.
  • Cleanup is roughly twice as fast for default users. The Groq client now sends reasoning_effort: "low" for gpt-oss models, capping the chain-of-thought that was wasted on a fully rule-bound cleanup prompt. Plus a hard max_completion_tokens: 2000 cap and include_reasoning: false so the model can't burn 30s generating forever or ship bytes we never read.
  • Double-press NVDA+Shift+V (within 500 ms) force-stops the add-on from any state. Cancel token, all the gates, dirty buffer cleared. The escape hatch that should never have been needed in the first place.
  • Custom microphone no longer silently reverts to "System default" when the saved device is on a filtered host API. ensure_device_in_choices() injects the saved device so the dialog shows it as the active selection.
  • Add-on no longer gets stuck on "Processing" if PortAudio's stop_stream() hangs (Realtek, several USB devices). AudioRecorder.stop() now isolates the call so close() always runs.

Full changelog

See CHANGELOG.md for the per-version detail (v0.6.0, v0.6.1, v0.7.0, v0.7.1).

Install

Replace your existing add-on installation with the attached groqVoiceDictation-0.7.1.nvda-addon, then restart NVDA (or toggle the add-on off/on from the add-ons manager).

Tests

188 unit tests pass: python -m pytest tests/

v0.5.0 — Cleanup model selection fix

Choose a tag to compare

@willbilec willbilec released this 04 Jul 06:54
474bba5

v0.5.0 (2026-07-04)

Fixed

  • Cleanup model selection not sticking in settings dialog. CleanupDialog._on_model_change called self.GetSizer().Layout(), but CleanupDialog is a wx.Dialog (not a SettingsPanel) and has no sizer of its own, so GetSizer() returned None and .Layout() threw AttributeError: 'NoneType' object has no attribute 'Layout' on every model change. The exception left the dialog's event loop in a confused state, causing subsequent OK clicks to intermittently fail to persist the new value to nvda.ini. Changed to self.Layout() with a comment explaining why. Symptom: users trying to switch the cleanup model from Gemini to Groq (or vice versa) sometimes found the change reverted after restarting NVDA.

Added

  • Three regression tests in CleanupDialogRegressionTests that assert the buggy self.GetSizer().Layout() cannot be reintroduced and that the rationale comment is preserved.

Installation

Download groqVoiceDictation-0.5.0.nvda-addon below and open it with NVDA (or drop it into your addons folder and restart NVDA). The fixed settings_panel.py is in the package — the cleanup model selection will now save reliably.

v0.4.0 — Gemini cleanup client and expanded prompts

Choose a tag to compare

@willbilec willbilec released this 04 Jul 03:24

v0.4.0 — Gemini cleanup client and expanded prompts

New

  • Gemini API client (gemini_client.py) — text cleanup via Gemini models
    • Supported models: gemini-2.5-flash-lite, gemini-2.5-flash, gemini-3.5-flash
    • Enter a Gemini API key in Settings → Manage API Keys to enable
  • Expanded cleanup prompts with detailed ASR mishearing fix rules
    • Concrete fix examples (e.g. ensor flow → TensorFlow, ype script → TypeScript)
    • False start vs opening-word distinction
    • Paraphrase creep prevention (moderate mode)
    • Hedge, slang, and profanity preservation

Changed

  • Cleanup prompts significantly expanded across all three modes (heavy/moderate/light)
  • User message format improved with explicit output constraints
  • Model-based routing: cleanup model starting with "gemini" → GeminiClient; otherwise → GroqClient
  • Build script and manifest bumped to v0.4.0

Notes

  • Gemini cleanup is experimental — may be slow or error on long transcripts (>10 seconds). Use a Groq cleanup model if needed.
  • To upgrade: replace your existing add-on installation with the attached groqVoiceDictation-0.4.0.nvda-addon

Previous (v0.3.0)

  • Readback / confirm mode with cancelable preview window
  • Fallback microphone improvements
  • Silence detection fixes

v0.2.0

Choose a tag to compare

@willbilec willbilec released this 30 May 22:18

What's new in 0.2.0

Silence detection fixes

  • Silence detection now only starts counting after speech is detected — recording no longer auto-stops before you've said anything
  • Raised default threshold from 500 to 1500 for more reliable detection on typical microphones
  • Extended threshold range up to 32767 (full 16-bit audio scale)

New: Microphone level sampler

  • New 'Sample microphone level' button in settings records ~1 second of audio and reports your microphone's ambient noise floor
  • Suggests an appropriate threshold value based on the measured level
  • 'Set threshold' button in the result dialog applies the suggestion directly — no manual typing needed

v0.1.0

Choose a tag to compare

@willbilec willbilec released this 14 May 17:00