Skip to content

Releases: nguyenanhduc09/Google-TTS-For-NVDA

Google TTS For NVDA v0.5

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/d...

Read more

Google TTS For NVDA v0.4

Choose a tag to compare

@phamhungvuong302 phamhungvuong302 released this 17 Jul 12:20

Google TTS For NVDA - Version 0.4

We are pleased to announce Version 0.4 of Google TTS For NVDA. This release focuses on stronger NVDA compatibility from 2024.1 through 2026, a new automatic language profile workflow for multilingual reading, broader Chromium runtime support, clearer documentation, and several speech reliability improvements that make the add-on easier to use every day.

After installing the add-on, users can read its help page from NVDA. Additional README guidance, including custom browser runtime path setup, is available from the main GitHub repository for this project.


Team Announcements & Special Acknowledgments

Special Thanks to @riadassoum for PR #18

We sincerely thank @riadassoum for PR #18, which helped fix a case where long sentences without ASCII punctuation could fail to speak. This contribution improved the add-on for users reading languages and documents that do not rely on English-style punctuation.

The work from PR #18 was later expanded by @phamhungvuong302 with broader Unicode Consortium punctuation data, allowing Google TTS For NVDA to split long text more safely across many scripts and language families (d8a2689, 76314ea, 41cdc8a, 340eb01, 21d78f7).

Technical Contributions from @nguyenanhduc09

We also thank @nguyenanhduc09 for important internal work that improves the user experience even when the changes are mostly behind the scenes. The performance and concurrency improvements in d8be9f3 help speech cancellation and audio delivery respond more quickly, while the bridge refactor in 340e1a8 makes the browser runtime connection easier to maintain without changing the user workflow.


What's New in Version 0.4

1. Automatic Language Profiles for Multilingual Reading

  • Automatic Language Profiles (5843b90, d08f29e, cf39285, 41cdc8a, 6981354, ccbde75): Google TTS For NVDA now includes automatic language profiles. The feature is inspired by Auto TTS on Android, which helps TalkBack users reduce manual TTS switching when reading multilingual content. In this NVDA add-on, each enabled language can have its own Google TTS voice variant, rate, rate boost, pitch, volume, capital-letter behavior, and spelling behavior. Configure this feature from NVDA Menu -> Preferences -> Settings -> Google TTS For NVDA.
  • Designed for NVDA's Speech Pipeline: When automatic language profiles are enabled, Google TTS chooses the selected profile for detected sentences and marks the language before NVDA processes symbols, dictionaries, and spelling. This helps punctuation, emoji, speech dictionaries, and character descriptions follow the active language context.
  • Normal Speech Settings Stay Intact: When automatic language profiles are turned off, the add-on returns to the normal NVDA Speech Settings workflow. Users can keep using Voice, Variant, Rate, Rate Boost, Pitch, and Volume the usual way. When automatic language profiles are on, those values are configured from the Google TTS For NVDA settings category instead, so the normal synth settings ring does not change the active Google TTS voice or speech values in that mode. This avoids conflicts with NVDA's normal Speech Settings workflow and keeps profile-managed values compatible with NVDA.
  • One Profile Still Works: If only one language profile is enabled, that profile is used for every sentence. This makes the feature useful even for users who want one custom Google TTS profile without switching between several languages.
  • CLD2-Based Detection: The add-on uses bundled CLD2 libraries for both x86 and x64 NVDA builds. CLD2 results are accepted only when they are reliable enough for one of the enabled profiles; unclear text falls back to safer local signals and the preferred profile language.

2. Stronger NVDA 2024.1-2026 Compatibility

  • Safer Synthesizer Switching (e6eca26, 437abc5): Fixed cases where Google TTS For NVDA could fail to become the active synthesizer on newer NVDA versions or when another add-on, such as Sonata, had already wrapped NVDA's synthesizer switching function.
  • No More Interference with NVDA Event Reading (33c645d): The add-on now hides browser helper windows without changing shared Win32 API prototypes inside NVDA. This prevents a problem where ordinary focus or key navigation speech could stop after the browser runtime started.
  • Safer NVDA Speech Hooks (d08f29e, ccbde75): Compatibility wrappers now handle speech processing and spelling behavior more carefully across NVDA 2024, 2025, and 2026, including both 32-bit and 64-bit builds.

3. Better Long-Text Reading Across More Languages

  • Long Sentences Without ASCII Punctuation (PR #18, d8a2689, 76314ea): Long text that uses non-ASCII punctuation or lacks English-style commas and periods is handled more safely, reducing the chance that an over-long sentence never speaks.
  • Unicode-Aware Punctuation and Script Handling (41cdc8a, 340eb01, 21d78f7): The text splitter now understands many punctuation marks used by CJK, Arabic, Indic, Southeast Asian, African, and other scripts. It also handles languages that often do not separate words with spaces, including Mandarin Chinese (China), Mandarin Chinese (Taiwan), Cantonese, Japanese, Thai, Khmer, Lao, Myanmar, Tibetan, and related scripts.
  • More Natural Prosody Joins (21d78f7): Segmented text is joined more carefully so the add-on avoids adding synthetic spaces where languages normally do not use them, while still inserting pauses where they improve reading.

4. Chrome, Edge, and Brave Runtime Improvements

  • Brave Runtime Support (42d6b5c): Google TTS For NVDA now supports Brave as a Chromium browser runtime, in addition to Google Chrome and Microsoft Edge.
  • Clearer Runtime Fallbacks (646e677, 42d6b5c, bf1649c): Google Chrome is the default runtime. If the saved runtime is unavailable, the add-on can try other supported runtimes instead of failing immediately.
  • Correct Edge WebView2 Handling (5843b90, 646e677, fba4548): Microsoft Edge WebView2 Runtime is checked only when Microsoft Edge is selected or used as the effective runtime. Google Chrome and Brave do not depend on WebView2.
  • Accessible Runtime Status: Configure the Chromium browser runtime from NVDA Menu -> Preferences -> Settings -> Google TTS For NVDA. The settings panel reports whether Chrome, Edge, Brave, and Edge WebView2 are available, and the status text is reachable and readable with a screen reader.

5. Documentation and Browser Path Guidance

  • Custom Browser Runtime Paths (fa6b184): The main README now explains how to set custom executable paths for Google Chrome, Microsoft Edge, and Brave, including accessible Windows GUI steps and command-line examples.
  • Edge WebView2 Troubleshooting (5843b90, 646e677): The GitHub documentation and the add-on user help explain what to do if Microsoft Edge is selected but speech remains silent because WebView2 is missing or damaged. The add-on can offer Microsoft's Evergreen Bootstrapper and WebView2 download page, with an accessible manual-copy fallback when Windows cannot open a link.
  • Documentation Locations: After installation, users can open the add-on help page from NVDA. Additional README guidance, including custom browser runtime path setup, is available from the main GitHub repository.

6. Settings Accessibility and User-Assignable Gesture

  • Assignable Google TTS Settings Gesture (c7a4aba): Added a command in NVDA Menu -> Preferences -> Input Gestures to open the Google TTS For NVDA settings category directly. It has no default shortcut, so users can choose their own gesture.
  • More Accessible Status Fields and Settings Ring Notice (c7a4aba, fba4548): Browser runtime status, automatic language profile status, and Speech Settings notices now use clearer label associations and announce their full messages when focused, while still allowing arrow-key review. When automatic language profiles are enabled, the normal synth settings ring announces that voice settings are managed by automatic language profiles and directs users to the Google TTS For NVDA settings category instead of changing voice parameters. This behavior is intentional for compatibility with NVDA's normal Speech Settings.

7. Voice Selection, Voice Manager, and Startup Reliability

  • Voice and Variant Settings (804a296): When automatic language profiles are off, Voice now selects the installed Google TTS language and Variant selects the specific voice within that language from NVDA Speech Settings and the synth settings ring. This makes choosing voices clearer, especially when several voices exist for the same language.
  • Safer Voice Warm-Up (804a296): Google TTS prepares only the voice or enabled profile voices most likely to be needed next. Real speech always takes priority and cancels warm-up immediately.
  • Voice Manager Safety Improvements (804a296): The Voice Manager better reports usable packages, missing dependencies, and packages required by others. It also protects users from removing the last usable voice package by mistake.
  • Regional Language Names: Voice Manager keeps regional language labels distinct, such as English (Nigeria), instead of collapsing them to a broader language name.

8. Performance, Stability, and Packaging Hygiene

  • Faster Cancellation and Audio Delivery (d8be9f3): The browser bridge now uses a background CDP reader and event-driven signaling so high-priority commands, such as speech cancellation, do not wait behind audio responses.
  • Smarter Audio Packet Buffering (d8be9f3, fba4548): The browser harness emits very small initial audio packets for quicker first sound, then larger packets during steady speech. It also waits briefly for final audio buffers so short utterances such as "OK button" are less likely to lose ...
Read more

Google TTS For NVDA v0.3

Choose a tag to compare

@nguyenanhduc09 nguyenanhduc09 released this 12 Jul 05:16

Google TTS For NVDA — Version 0.3

We are pleased to announce Version 0.3 of Google TTS For NVDA. This release brings significant improvements to speech responsiveness, browser runtime flexibility, Voice Manager accessibility, automated localization infrastructure, and complete Vietnamese localization.


Team Announcements & Special Acknowledgments

Welcoming Our New Collaborator — Pham Hung Vuong (@phamhungvuong302)

We are excited to welcome Pham Hung Vuong (@phamhungvuong302) as an official Collaborator and Co-developer on the project. Through his consistent and impactful pull requests—including Voice Manager keyboard focus and accessibility improvements (ac1e6fe, 97ae3b3), speech cancellation handling during voice preloading (7bc229a / PR #10), voice removal state consistency (4125d27 / PR #11), and orphaned voice package detection and cleanup (7c8d46a / PR #12)—he has made invaluable contributions to this release and the project's codebase.

Special Thanks to Ruslan Dolovaniuk (@DollaR84)

We extend our sincere thanks to contributor Ruslan Dolovaniuk (@DollaR84) for his pull request (1515b42 / commit 957a8d5), which integrated Microsoft Edge as a supported browser runtime. This ensures the add-on works reliably out of the box on Windows systems where Google Chrome is not installed.


What's New in Version 0.3

1. Multi-Browser Support & Isolated Profile Storage

  • Browser Runtime Selection (29950c9, 915772d, 957a8d5): Users can now switch between Microsoft Edge and Google Chrome directly from the NVDA Voice Settings panel.
  • Persistent Cache Storage in LocalAppData (b57fa5c, bfb4096): Browser runtime profiles have been moved to %LOCALAPPDATA%\GoogleTtsForNvda\browserProfiles. This preserves compiled WASM engine caches across NVDA restarts and ensures helper background windows remain completely hidden (57159a6).

2. Localization Infrastructure & Full Vietnamese Translation

  • Automated Translation System (8798b55, e377fd3): Implemented a comprehensive translation and build pipeline (build_i18n.py) supporting automated locale checks, translation file compilation (nvda.mo), and localized add-on manifests.
  • Complete Vietnamese Localization: Delivered a 100% full Vietnamese translation covering all dialogs, user interface labels, status announcements, add-on manifest metadata, and user documentation.

3. Voice Manager & UI Accessibility Enhancements

  • Startup Prompt for No Installed Voices (fdcceb5, ea5a71d): Added an explicit confirmation alert when selecting Google TTS For NVDA as the synthesizer without any voice packages installed. Users can choose OK to open the Voice Manager immediately or Cancel to keep their current synthesizer.
  • Per-Tab Language Filtering (f7d6255): Added a Filter by language dropdown on each voice tab to help users quickly browse and locate voices for specific languages.
  • Orphaned Voice Package Cleanup (7c8d46a, 4b12db4): Added detection and one-click removal for obsolete or orphaned voice packages to reclaim disk space safely.
  • UI Wording & Accessible Labels Polish (e63b643, 7638349, ac1e6fe, 97ae3b3): Redesigned control names, improved keyboard navigation focus behavior, and refined status and error announcements for screen readers.

4. Expanded 180-Voice Catalog & Normalized Language Codes

  • Full 180 Voice Packages (bbf091b): Integrated the complete catalog of 180 Google TTS voice packages, including high-speed Chrome OS voices and high-quality Google Natural voices.
  • Language Code Normalization (a724805): Standardized language codes across all voices for accurate automatic language switching in NVDA.

5. Responsiveness & Latency Optimizations

  • Fixed First-Utterance Cut-off (913602a): Resolved an issue where the initial spoken sentence could be cut off immediately after switching synthesizers or starting NVDA.
  • Reduced Speech Latency (c6fe47c, 6fc2d8b, 9c59042): Optimized first-audio response time, refined sentence pause durations, and improved in-memory volatile speech caching for short phrases (fe263a5).

Google TTS For NVDA v0.2

Choose a tag to compare

@nguyenanhduc09 nguyenanhduc09 released this 04 Jul 03:06

What's Changed

Expanded voice catalog

  • Reorganized voices.json with language packages sorted alphabetically by locale.
  • Added Natural (seanet) voice variants for supported languages.
  • Introduced over 40 new language and dialect packages, including Arabic, Bengali, Gujarati, Kannada, Malayalam, Marathi, Punjabi, Tamil, Telugu, Urdu, and more.
  • Consolidated and renumbered speaker IDs within each language.
  • Replaced Unicode escape sequences with readable native characters.
  • Added dependentVoiceId mappings for Natural voice variants.

Updated WASM TTS engine

  • Upgraded the bundled WASM TTS engine from 20260611.1 to 20260625.1.
  • Added the complete WasmTtsEngine/20260625.1 package, including the compiled JavaScript, WebAssembly binary, manifest, metadata, voices, and audio worklet files.
  • Removed obsolete metadata from the previous engine version.
  • Updated AGENTS.md and catalog.py to reference the new engine version.
  • Improved bridgeHarness.js to dynamically resolve the engine instance (getTtsEngine) before calling init, onSpeak, and onStop, improving compatibility with engine updates.
  • Applied minor updates to bindings_main.js to match the latest worker protocol, command encoding, and WebAssembly exports.

Full Changelog: v0.1.5...v0.2

Google TTS For NVDA v0.1.5 - public release

Choose a tag to compare

@nguyenanhduc09 nguyenanhduc09 released this 02 Jul 02:52

Google TTS For NVDA v0.1.5

The initial public release of Google TTS For NVDA—bringing Google Chrome's WebAssembly (WASM) Text-to-Speech engine directly to your NVDA screen reader, working 100% offline.

Co-developed by Nguyen Anh Duc and Dao Duc Trung.


Key Features

  • Voice Support: Access all offline languages and voices from WasmTtsEngine (including fast Chrome OS packages and high-quality Google Natural packages).
  • 100% Offline: Speech is processed locally. No data is ever sent to external servers.
  • Accessible Voice Manager: Press NVDA+Ctrl+Shift+G to download or manage voice packages.

Known Issues

  • Voices may load slowly during the very first initialization.
  • Sentence pauses and speech segmentation might occasionally be slightly unnatural.

How to Install

  1. Download the .nvda-addon file from the Assets section below.
  2. Open the file to install, then restart NVDA.
  3. Switch your NVDA Synthesizer to Google TTS For NVDA.
  4. If no voices are installed, the Voice Manager will automatically open to help you download a voice package.

Contact