Skip to content

Google TTS For NVDA v0.5

Latest

Choose a tag to compare

@phamhungvuong302 phamhungvuong302 released this 22 Jul 05:34

Google TTS For NVDA - Version 0.5

We are pleased to announce Version 0.5 of Google TTS For NVDA.

For a long time, screen reader users have wished they could use familiar voices from Google's text-to-speech technology on NVDA for Windows, similar to the experience on Android screen readers. Google TTS For NVDA was created to fulfill that wish by using Google's text-to-speech technology through WebAssembly (WASM), running in a supported background Chromium browser runtime such as Google Chrome, Microsoft Edge, or Brave.

Version 0.5 focuses on built-in add-on update checking, a new global Pauses setting, more reliable Chromium browser runtime fallback, stronger compatibility with older and newer NVDA versions, new Simplified Chinese, Traditional Chinese, and Russian localization, and several speech reliability and accessibility improvements. Once the needed voice packages are downloaded, speech continues to be synthesized locally on the computer.

After installing the add-on, users can read its help page from NVDA. Additional README guidance, including browser runtime setup, Edge WebView2 troubleshooting, automatic language profiles, add-on updates, and WSL/Linux build notes for maintainers, is available from the main GitHub repository for this project.


Team Announcements & Special Acknowledgments

Simplified Chinese Localization from @NVCDevelopmentTeam

We sincerely thank @NVCDevelopmentTeam for Simplified Chinese localization across the interface, add-on metadata, user documentation, update messages, wording for the Pauses setting, terminology, and compiled message catalogs through PR #24, PR #30, PR #32, PR #35, PR #40, and PR #41.

Traditional Chinese and Build Workflow Contributions from @linyuqing222

We also thank @linyuqing222 for the Traditional Chinese translation and documentation, the WSL/Linux build workflow, and Simplified Chinese build-safety fixes through PR #36, PR #37, PR #38, and PR #39. These changes help both users and translators work with the add-on more confidently.

Russian Localization from @nvda-ru and @ninhhoang2005

We thank @nvda-ru for Russian interface translation and user documentation, and @ninhhoang2005 for submitting that work through PR #29, PR #31, PR #33, and PR #34.

Maintenance Work from @phamhungvuong302

This release also includes maintenance work by @phamhungvuong302 across the updater, Chromium runtime fallback, NVDA compatibility, CLD2 provenance, speech reliability, documentation, pause handling, release metadata, bundled engine maintenance, and accessibility polish.


What's New in Version 0.5

1. Built-In Add-On Update Checking

  • Manual and startup update checks (4bc4d3b): Google TTS For NVDA can now check for stable add-on updates from NVDA Menu -> Preferences -> Settings -> Google TTS For NVDA. Manual checking is always available. Startup checking is optional and disabled by default, so each user can decide whether the add-on should check once after NVDA starts.
  • Localized update flow (4bc4d3b): When a newer version is available, the add-on shows an Update information dialog with the download size, minimum NVDA version, last tested NVDA version, and change log. If the user chooses to continue, the .nvda-addon package is downloaded inside NVDA, verified against size and SHA256 metadata, and handed off to NVDA's standard add-on installer.
  • Same-version hotfix support (7726257): The updater can recognize small hotfix builds inside the same public version. This lets maintainers offer important reliability or compatibility fixes without making the public version list harder to follow.

2. More Reliable Chromium Runtime Startup and Fallback

  • Voice package startup and profile restore (cb7aa1a): Google TTS For NVDA prepares the currently selected voice package sooner and restores saved Google TTS profile settings more reliably after synth changes. This is an improvement to startup behavior; the Chromium browser runtime and WASM startup can still affect the first speech timing.
  • Runtime readiness checks (48ece5f): Chrome, Edge, or Brave is only treated as usable after the browser executable is found, the browser starts, DevTools is reachable, the speech page WebSocket is found, CDP domains are enabled, and the browser harness reports ready.
  • Fallback after startup or bridge failures (48ece5f, f98ec7d): If the selected Chromium browser runtime cannot start or is not ready, the add-on cleans up that attempt and tries another supported runtime. It also retries temporary DevToolsActivePort read races while Chromium is still starting, reducing rare silent startup or browser connection failures.
  • Clearer Edge WebView2 handling (48ece5f): Edge can be skipped when WebView2 is missing and another supported runtime is usable. Google Chrome and Brave do not depend on WebView2. The WebView2 install or repair prompt is shown only when Edge is needed and no supported fallback runtime remains.

3. Stronger NVDA Compatibility and Language Handling

  • Future-proof NVDA hooks (c89e41b): Speech processing, spelling, voice dictionaries, settings dialogs, synthesizer switching, the global plugin, and the synth driver now tolerate forwarded positional and keyword arguments across older and newer NVDA APIs.
  • Language-change handling (856d85a): Google TTS no longer allows NVDA or applications to force Google TTS to switch Google voices or dialects through NVDA language-change commands. When automatic language profiles are enabled, Google TTS profile detection controls the Google TTS voice/profile choice. When profiles are off, NVDA can still use application language information for language reporting and character or symbol processing without changing the Google TTS voice.
  • CLD2 detector provenance (c89e41b): The bundled CLD2 detector DLLs were rebuilt for 32-bit and 64-bit NVDA builds, with clearer provenance notes and ABI expectations for future maintenance and antivirus review.

4. Speech Reliability and the Pauses Setting

  • Safer short-speech caching (e14ef0e): Short speech audio is cached only after synthesis completes, reducing rare cases where interrupted speech could later replay incompletely.
  • SeaNet Pitch restoration (d3811c2): Pitch control works again for SeaNet voices. For high-speed SeaNet speech, the quality-preserving post-synthesis processing remains CPU-heavier by design.
  • Voice Settings refresh guard (3f1350f): A rare stale Voice Settings refresh after switching away from Google TTS is now guarded.
  • Global Pauses setting (028006b): NVDA's Speech settings dialog now includes Pauses for Google TTS For NVDA, inspired by the pause-shortening workflow in the IBMTTS driver for NVDA. Users can keep pauses unchanged, shorten only pauses at the end of text, or shorten pauses throughout speech for faster reading. This option applies to all Google TTS speech, including automatic language profiles and SeaNet voices.
  • Pause-processing improvements (028006b): Pause shortening works on returned PCM audio, separates short-audio cache entries by pause mode, clears cached audio when the pause mode changes, and improves Unicode punctuation handling for sentence and segment pauses.

5. Simplified Chinese, Traditional Chinese, and Russian Localization

  • Simplified Chinese (PR #24, PR #30, PR #32, PR #35, PR #38, PR #40, PR #41): Added and refined Simplified Chinese interface translations, localized metadata, user documentation, update wording, Pauses wording, terminology, placeholder safety, and compiled message catalogs.
  • Traditional Chinese (PR #37, PR #39): Added Traditional Chinese interface translations, compiled message catalog, localized metadata, and user documentation, then synchronized the translated release notes.
  • Russian (PR #29, PR #31, PR #33, PR #34): Added Russian interface translation, localized metadata, compiled message catalog, and user documentation updates.
  • English and Vietnamese documentation refresh (044fae9, 2014729, 9374360, 107aee7, 9a5e9df): Refined English and Vietnamese release/help wording, refreshed Vietnamese generated catalogs, completed packaged localization updates, and aligned user-facing documentation with Version 0.5 behavior.

6. Status Field Accessibility and Maintenance Hygiene

  • Focusable status fields (4bc4d3b, 6cd3d32): Chromium browser runtime status, automatic language profile status, add-on update status, Speech Settings notices, update information, and manual fallback URL fields are easier to focus and review with a screen reader, without delayed repeated announcements.
  • Update cleanup and memory use (6cd3d32): Cancelled or failed update downloads clean up temporary files more thoroughly, and the short-speech RAM cache cap was lowered from 200 MB to 150 MB.
  • Bundled engine and maintainer guidance (a9e3507, cbe1752): The bundled Google WASM TTS engine was refreshed, the browser harness was adjusted for the refreshed engine object, unsupported package guards were retained, and maintainer guidance was updated with WASM compatibility rules.

Frequently Asked Questions

What do I need before choosing Google TTS For NVDA as my synthesizer?

You need NVDA 2024.1 or newer, at least one installed Google TTS voice package, and a supported Chromium browser runtime: Google Chrome, Microsoft Edge, or Brave. If Microsoft Edge is the selected or effective runtime, Microsoft Edge WebView2 Runtime must also be available. Google Chrome and Brave do not depend on WebView2.

Does Google TTS For NVDA need an internet connection all the time?

No. After the voice packages you want have been downloaded, speech is synthesized locally on the computer. Internet access is still needed when you download additional voice packages or check/download add-on updates.

Do I need to keep Chrome, Edge, or Brave open?

No. The add-on starts and connects to the supported Chromium browser runtime in the background. You do not need to keep a normal browser window open while using NVDA.

Are there places where I should not rely on this add-on?

Yes. Google TTS For NVDA depends on a Chromium browser runtime running in the current Windows user session. It should not be relied on at the Windows sign-in screen, secure desktop contexts, Windows PE, recovery environments, or other minimal Windows sessions where the browser runtime cannot start.

What should I do if no Google TTS voices are installed?

Open Google TTS Voice Manager and download at least one voice package. You can open it from NVDA Menu -> Tools -> Google TTS Voice Manager... or with NVDA+Ctrl+Shift+G. If you choose Google TTS For NVDA while no usable voice package is installed, the add-on can prompt you to open Voice Manager.

Why can't I change voice, rate, pitch, or volume from NVDA's synth settings ring while Automatic Language Profiles are enabled?

NVDA's Speech Settings and synth settings ring are designed for real-time changes: when you change Voice, Variant, Rate, Pitch, or Volume there, the synthesizer should start using the new value immediately. Automatic language profiles work differently. Profile edits are made in the Google TTS For NVDA settings category (NVDA Menu -> Preferences -> Settings -> Google TTS For NVDA) and are applied when the user presses OK.

Because of that difference, the synth settings ring does not edit profile-managed values while automatic language profiles are enabled. This avoids a confusing state where real-time voice changes would compete with profile settings that have not been applied yet. It also avoids a pause or hesitation if a user accidentally disables every language profile before returning to the normal Speech Settings workflow. Pauses remains available in NVDA Speech settings because it is a global Google TTS speech option rather than a per-language profile value.

What does the Pauses setting do?

Pauses is inspired by the familiar pause-shortening workflow in the IBMTTS driver for NVDA. It lets you keep pauses unchanged, shorten only pauses at the end of text, or shorten pauses throughout speech for faster reading. The default remains unchanged pause timing. Google TTS For NVDA applies pause shortening after audio returns from the browser runtime, and the setting applies to all Google TTS speech, including automatic language profiles and SeaNet voices.

Why does changing Voice select the first Variant by default?

In synthesizers such as eSpeak or IBM, Variant is usually a fixed synthesizer-side variant, so keeping one variant value across voices is predictable. In Google TTS For NVDA, Voice means the installed Google TTS language or dialect, while Variant means the speaker or voice name available inside that language, including Chrome OS and Google Natural voices when installed. The available Variant list changes with the selected language and with the installed voice packages.

For that reason, Google TTS For NVDA does not keep a separate remembered Variant for every Voice. When the current Variant is not available in the newly selected Voice, the add-on selects the first available Variant so speech remains usable. Storing per-Voice Variant history would add many add-on-specific entries to nvda.ini, and removing voice packages or uninstalling the add-on would not automatically remove those stale entries. This is why the add-on uses the predictable first-available Variant fallback instead of per-Voice Variant history.

Why can Microsoft Edge be installed but Google TTS still stay silent when Edge is selected?

Microsoft Edge and Microsoft Edge WebView2 Runtime are related, but they are not the same requirement. When Edge is the Chromium runtime, Google TTS For NVDA also needs WebView2. If Edge is available but WebView2 is missing or damaged, install or repair Microsoft Edge WebView2 Runtime with Microsoft's Evergreen Bootstrapper: https://go.microsoft.com/fwlink/p/?LinkId=2124703. For offline installers or fixed-version packages, use Microsoft's WebView2 page: https://developer.microsoft.com/microsoft-edge/webview2.

Why do some antivirus products warn about the add-on?

Version 0.4 was already reported as suspicious by some antivirus products because the add-on bundles CLD2 DLL files for language detection. In Version 0.5, these DLLs were rebuilt for 32-bit and 64-bit NVDA builds with clearer source provenance and maintenance notes. However, rebuilt DLLs are still new binary files, so no project can guarantee that every antivirus product will immediately recognize them as safe. Please download only from the official repository and report suspected false positives so they can be reviewed.

Is the WASM TTS engine the original one from Google?

Google TTS For NVDA uses Google's browser-side WASM TTS technology as its base, but the add-on adds its own NVDA bridge, voice catalog, local voice package loading, and Voice Manager. This lets the add-on offer a broader Google TTS voice catalog while blocking package families the bundled engine cannot load.

Should I turn on automatic update checking at startup?

This is optional and disabled by default. If enabled, Google TTS For NVDA checks once after the next NVDA startup and stays silent unless a newer version is available. Manual checking remains available from the Google TTS For NVDA settings category.