Google TTS For NVDA

Authors: Nguyen Anh Duc, Dao Duc Trung, and Pham Hung Vuong

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 leveraging 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, this add-on brings familiar, natural Google voices to enhance your daily computer use.

Once your desired voice packages are downloaded, the add-on operates entirely offline on your computer, providing responsive speech without requiring a continuous internet connection.

Key Features

System Requirements

Quick Start Guide

  1. Open NVDA's Select Synthesizer dialog by pressing NVDA+Ctrl+S and choose Google TTS For NVDA.
  2. If no voice packages are installed, NVDA will display a message indicating that no Google TTS For NVDA voices are installed. Press OK to open Google TTS Voice Manager and download a voice package. Press Cancel to keep using your current synthesizer for now.
  3. In Google TTS Voice Manager, download at least one voice package from the Download tab.
  4. Once downloaded, open Speech settings (NVDA+Ctrl+V) to select your preferred language and variant.

Managing Voices

You can open Google TTS Voice Manager at any time to add or remove voice packages:

Google TTS Voice Manager has two tabs:

On each tab, the controls appear in this order: Filter by language, Check all voice packages, the package list, then either Remove checked voice packages or Download checked voice packages. The dialog also has a Status line and the buttons Refresh, Open voice packages folder, and Close.

To add voices, use the Download tab, check the packages you want, and press Download checked voice packages. To remove voices, use the Installed tab, check the packages you no longer want, and press Remove checked voice packages.

Some voice packages depend on another package. When you download a dependent package, Voice Manager can also download the required package. When you remove a package that other installed packages depend on, Voice Manager includes those dependent packages so you do not leave unusable voices behind.

Voice Manager protects you from accidentally removing the last usable voice package. If Google TTS For NVDA is not the current synthesizer, the warning defaults to No. If Google TTS For NVDA is the current synthesizer, Voice Manager asks you to switch to another synthesizer first and keeps the last usable package installed if you do not switch away.

You can use the Filter by language dropdown box on either tab to display only the voice packages for your desired language (e.g., English or Vietnamese) to find voices more quickly. Additionally, you can click Open voice packages folder if you wish to check where voice packages are stored on your computer.

Voice downloads and removals are handled in the background so you can continue using NVDA without interruption. Progress announcements are kept to broad milestones and final results so they do not repeat every small percentage change.

Configuration

Speech Settings

NVDA's Speech settings dialog (NVDA+Ctrl+V) provides Pauses for Google TTS For NVDA whether automatic language profiles are on or off. When automatic language profiles are off, the dialog also provides:

Pauses: Choose whether pauses stay unchanged, are shortened only at the end of text, or are shortened throughout speech for faster reading. This setting applies to all Google TTS speech.

Add-on Settings

Under NVDA Menu → Preferences → Settings → Google TTS For NVDA, you can configure:

The Google TTS For NVDA settings category can also be opened with a custom input gesture. It has no shortcut assigned by default; assign one from NVDA Menu → Preferences → Input Gestures under the Google TTS For NVDA category.

Add-on Updates

Open NVDA Menu → Preferences → Settings → Google TTS For NVDA and press Check for updates... to check the latest stable release. Manual checks show an OK dialog when the add-on is already up to date, when the internet connection cannot be reached, or when the update response cannot be understood.

When a newer version is available, Google TTS For NVDA shows an Update information dialog with the download size, minimum NVDA version, last tested NVDA version, and the change log. Choose Yes to download the .nvda-addon package inside NVDA. While downloading, the Downloading Google TTS For NVDA update dialog shows Download status, a progress bar when the size is known, and Cancel. The add-on verifies the downloaded file against the update manifest's size and SHA256 checksum, then opens NVDA's normal add-on installer.

Automatic startup checks are off by default. If you turn them on, Google TTS For NVDA checks once after the next NVDA startup and stays silent unless a newer version is available. Manual checking remains available whether automatic checks are on or off. If a background startup check is already running while the settings category is open, the manual check button is disabled until that check finishes. Changing the Automatically check for add-on updates when NVDA starts checkbox affects future NVDA startups and does not interrupt a check that is already running.

The updater can also recognize small hotfix builds inside the same public version. This lets maintainers publish compatibility or reliability fixes without changing the displayed version number, while NVDA can still offer the newer build when the release metadata says one is available.

Automatic Language Profiles

When Use automatic language profiles is enabled, detected sentences use the add-on's per-language profiles instead of the normal NVDA Speech settings. If only one language profile is enabled, that profile is used for every sentence. Your regular Google TTS language and variant settings remain available again when automatic language profiles are turned off.

Automatic language profiles use bundled CLD2 detector libraries for both 32-bit (x86) and 64-bit (x64) NVDA builds. CLD2 results are accepted only when they are reliable enough for one of the enabled languages. If text is too short or unclear, the add-on uses conservative local language signals where available, then falls back to the preferred enabled language.

  1. Open NVDA Menu → Preferences → Settings → Google TTS For NVDA.
  2. Enable Use automatic language profiles.
  3. Move to Preferred profile language. Only enabled languages appear in this list, so it may be empty until you enable a profile.
  4. Select an Automatic language profile.
  5. Select the Use this language profile checkbox for each language you want automatic language profiles to use. Language profiles are off until this checkbox is selected.
  6. For each enabled language, set Variant, Rate, Rate boost, Pitch, Volume, Capital pitch change percentage, Say cap before capitals, Beep for capitals, and Use spelling functionality if supported.
  7. Return to Preferred profile language and choose the enabled language used when a sentence is unclear.

Rate, pitch, and volume use slider controls like NVDA's Speech Settings. Capital-letter pitch uses a numeric edit/spin control so you can adjust it precisely.

NVDA-wide settings such as punctuation and symbol level, automatic dialect switching, language change reporting, Unicode normalization, Unicode Consortium data including emoji, extra symbol dictionaries, delayed character descriptions, and speech mode choices remain in NVDA's Speech Settings.

Google TTS ignores NVDA's own automatic language and dialect switching commands for this synthesizer, so those global options do not force Google TTS to change voices. Use Google TTS automatic language profiles when you want automatic voice/profile selection in this add-on. If NVDA's Report language changes while reading option is enabled, reported language names follow Google TTS automatic language profile detection while profiles are on. When profiles are off, NVDA can still use app-provided language changes for language reporting and character/symbol processing, including punctuation and symbol dictionaries, but Google TTS will not change voices from those commands.

Automatic language profiles set the language context before NVDA processes text, so NVDA's symbol pronunciation and speech dictionary processing stay in the normal speech flow for the selected language context.

When automatic language profiles are off, NVDA voice dictionaries work normally for the currently selected Google TTS variant. When automatic language profiles are on, the add-on temporarily uses the voice dictionary for each enabled language profile's selected variant while NVDA processes that segment. NVDA's default and temporary dictionaries still follow NVDA's normal behavior.

While automatic language profiles are enabled, NVDA's Speech settings dialog will not offer the normal voice, variant, rate, rate boost, pitch, and volume controls for this synthesizer. It will show a focusable notice directing you to the Google TTS For NVDA settings category instead. Pauses remains available in Speech settings and applies to all Google TTS speech. The normal synth settings ring commands, such as NVDA+Ctrl+Arrow keys on desktop keyboards or NVDA+Shift+Ctrl+Arrow keys on laptop keyboards, announce this notice instead of changing the Google TTS voice or speech values in this mode. Google TTS also uses each enabled profile's capital-letter and spelling options while automatic language profiles are on; the normal Speech Settings values remain available again when automatic language profiles are turned off. Status messages in the Google TTS For NVDA settings category are also reachable with Tab so screen readers can announce them.

Troubleshooting Edge Runtime Silence

If you choose Microsoft Edge as the Chromium browser runtime, Google TTS For NVDA also checks whether Microsoft Edge WebView2 Runtime is available. Edge may be installed while WebView2 is missing or damaged, and in that case the add-on cannot use Edge for speech. Google Chrome and Brave do not depend on WebView2.

WebView2 is the Microsoft Edge runtime used by native Windows applications to host web content. It is related to Microsoft Edge, but having the normal Edge browser available does not always mean the WebView2 Runtime is installed and healthy for app scenarios. Microsoft recommends the Evergreen WebView2 Runtime for applications because it is shared, automatically updated, and the small Evergreen Bootstrapper downloads the matching runtime for the device architecture.

When WebView2 is needed, Google TTS For NVDA offers buttons to download Microsoft's online Evergreen Bootstrapper, open Microsoft's WebView2 page for offline installers or fixed-version packages, or leave the change for later. NVDA keeps using the previous synthesizer until WebView2 is available.

If Windows cannot open the download page, the add-on shows the download address in a labeled read-only field and includes a Copy link button so you can paste the address into a browser manually.

For an online computer, download the Microsoft Edge WebView2 Evergreen Bootstrapper here: Download Microsoft Edge WebView2 Runtime.

Run the installer, restart NVDA, then select Google TTS For NVDA again. For offline installers or a fixed-version WebView2 Runtime package, open Microsoft's WebView2 page: Microsoft Edge WebView2.

Notes

Community Contributions

We value pull requests from the community. A contribution can be accepted when the code runs reliably, fits the add-on's existing logic and interface, avoids introducing regressions in other add-on features, does not interfere with other NVDA add-ons or NVDA itself, does not weaken add-on security, and does not collect user data without permission.

Support & Contact

If you have questions, feedback, or need assistance, feel free to contact the development team:

Change Log

Version 0.6 (2026-07-30)

Version 0.5.5 (2026-07-23)

Version 0.5 (2026-07-19)

Version 0.4 (2026-07-16)

Version 0.3 (2026-07-12)

Version 0.2 (2026-07-03)

Version 0.1.5 (2026-07-02)

Last edited on 2026-07-30