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
- Fully offline operation: Speech is processed locally after the needed voice packages are downloaded.
- Diverse languages and voices: Provides multiple Google TTS voice packages for supported languages.
- Fast response and low latency: Uses text segmentation and audio buffering to improve NVDA responsiveness.
- Google TTS Voice Manager: Browse, download, remove, and inspect voice packages from an accessible dialog.
- Chromium Browser Runtime Selection: Choose Google Chrome, Microsoft Edge, or Brave as the supported background browser runtime.
- Automatic language profiles: Optionally use per-language profiles so different languages can have their own voice and speech values.
- Built-in add-on updates: Check for add-on updates from NVDA Settings, with an optional once-per-startup automatic check.
System Requirements
- NVDA: Version 2024.1 or newer. The add-on supports NVDA 2024 through 2026 on both 32-bit (x86) and 64-bit (x64) NVDA builds.
- Chromium browser: Google Chrome, Microsoft Edge, or Brave installed on your computer. If you use Microsoft Edge as the runtime, Microsoft Edge WebView2 Runtime must also be available.
- Interactive Windows user session: Do not rely on this add-on where the Chromium browser runtime cannot start, such as the Windows sign-in screen, secure desktop contexts, Windows PE, recovery environments, or other minimal Windows sessions.
Quick Start Guide
- Open NVDA's Select Synthesizer dialog by pressing NVDA+Ctrl+S and choose Google TTS For NVDA.
- 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.
- In Google TTS Voice Manager, download at least one voice package from the Download tab.
- 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:
- Press the shortcut NVDA+Ctrl+Shift+G, or
- Go to NVDA Menu → Tools → Google TTS Voice Manager...
Google TTS Voice Manager has two tabs:
- Installed: Shows voice packages that are already stored on your computer. The Status column tells you whether each package is Usable, not supported by the bundled engine, missing a required package, required by another installed package, or dependent on another package.
- Download: Shows packages that can be downloaded. The Status column explains whether a package is available to download, requires another package, already has its required package installed, or is required by other downloadable packages.
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:
- Voice: Choose the installed Google TTS language.
- Variant: Choose the voice name within that language, including Chrome OS and Google Natural voices when installed.
- Rate: Adjust the reading speed.
- Rate Boost: Enable to double the speech rate for high-speed reading.
- Pitch: Adjust the pitch of the voice.
- Volume: Adjust the speech volume.
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:
- Chromium browser runtime: Choose Google Chrome, Microsoft Edge, or Brave as the background Chromium browser runtime for the add-on. The settings panel displays browser availability.
- Chromium browser runtime status: Review the selected runtime, browser availability, and the active fallback runtime when one is used.
- Keep Google TTS browser runtime ready in the background: Turn on to let Google TTS prepare the browser runtime and current voice package while another synthesizer is active, so switching back to Google TTS can be faster. This setting is off by default. After you turn it on and press OK or Apply, it may use more memory and keep runtime files open until you turn it off or exit NVDA.
- Background browser runtime status: Review whether this setting is off, unnecessary because Google TTS is already the current synthesizer, or waiting to start after you press OK or Apply.
- Use automatic language profiles: Enable automatic profile selection and open the profile controls described below.
- Preferred profile language: Choose the enabled profile language used when a sentence is unclear. This list can be empty until at least one language profile is enabled.
- Automatic language profile: Choose which installed language profile to edit.
- Use this language profile: Enable the selected language profile.
- Variant, Rate, Rate boost, Pitch, Volume, Capital pitch change percentage, Say cap before capitals, Beep for capitals, Use spelling functionality if supported: Configure speech values for the selected enabled profile.
- Automatic language profiles status: Review whether profiles are off, unavailable, missing a selected profile, or active.
- Updates: Contains the add-on update controls below.
- Automatically check for add-on updates when NVDA starts: Let Google TTS For NVDA check once after the next NVDA startup. This is off by default.
- Add-on update status: Review the installed add-on version, whether automatic startup checks are on or off, and whether a check is currently running.
- Check for updates...: Manually check for the latest stable add-on release.
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.
- Open NVDA Menu → Preferences → Settings → Google TTS For NVDA.
- Enable Use automatic language profiles.
- Move to Preferred profile language. Only enabled languages appear in this list, so it may be empty until you enable a profile.
- Select an Automatic language profile.
- 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.
- 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.
- 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
- You do not need to keep a Google Chrome, Microsoft Edge, or Brave browser window open while using NVDA. The add-on automatically connects and processes speech in the background.
- When NVDA first speaks after startup, voices may take a brief moment to initialize.
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)
- Faster synthesizer switching: Added an optional setting to make Google TTS ready faster when switching from another synthesizer. This setting is off by default; when turned on, it may use more memory while NVDA is running.
- Background preparation: When this setting is enabled, Google TTS updates its background preparation after you change the selected Chromium browser runtime or install/remove voice packages.
- Switching reliability: Improved reliability when switching away from Google TTS, especially while speech or voice preparation is still stopping.
Version 0.5.5 (2026-07-23)
- Automatic Language Profiles: Improved automatic language profile matching across CLD2 and Google TTS language-code aliases, including Filipino/Tagalog, Javanese, legacy Hebrew codes, Norwegian variants, Arabic, and Simplified, Traditional, and Cantonese Chinese mappings.
- CLD2 Windows DLLs: Rebuilt the bundled CLD2 Windows DLLs with MSVC instead of MinGW-w64 so the packaged add-on no longer triggers the previous false-positive antivirus detection in VirusTotal testing.
Version 0.5 (2026-07-19)
- Add-on Updates: Added built-in update checking from the Google TTS For NVDA settings category, with optional startup checks, localized update information, in-NVDA package download, handoff to NVDA's standard add-on installer, and support for small hotfix builds inside the same public version.
- Chromium Runtime Fallback: Improved Chrome, Edge, and Brave fallback so Google TTS For NVDA can try another supported browser runtime when the selected one cannot start or is not ready. Edge can now be skipped when WebView2 is missing and another supported runtime is usable. Google TTS For NVDA also waits and retries when the browser is still finishing startup, reducing rare silent startup or browser connection failures.
- NVDA Compatibility: Improved compatibility with older and newer NVDA versions across speech, spelling, voice dictionaries, settings, synth switching, the global plugin, and the synth driver. Google TTS also keeps NVDA/app language-change commands from switching Google voices while preserving them for language reporting and character/symbol processing when automatic language profiles are off.
- Simplified Chinese, Traditional Chinese, and Russian Localization: Added Simplified Chinese, Traditional Chinese, and Russian UI translations and user documentation. The Chinese locales also include localized add-on metadata.
- Speech Reliability: Fixed rare cases where interrupted speech could be replayed incompletely, restored Pitch control for SeaNet voices, and avoided a rare Voice Settings error after switching away from Google TTS. Added the Pauses setting for optional pause shortening; enable it from NVDA's Speech settings dialog (NVDA+Ctrl+V), with details in the Configuration section.
- Status Field Accessibility: Made runtime, automatic language profile, update, Speech Settings notice, and manual URL fallback status fields easier to focus and review without delayed repeated announcements.
Version 0.4 (2026-07-16)
- Automatic Language Profiles: Added per-language Google TTS profiles inspired by Auto TTS on Android. Configure them from the Google TTS For NVDA settings category; each enabled language can use its own variant, rate, rate boost, pitch, volume, capital-letter behavior, and spelling behavior while normal NVDA Speech Settings remain available when the feature is off.
- NVDA Compatibility: Improved compatibility with NVDA 2024.1 through 2026, including safer synthesizer switching, safer speech-processing hooks, and better behavior when another add-on wraps NVDA's synthesizer selection.
- Multilingual Long-Text Reading: Improved sentence and phrase splitting for text that uses non-ASCII punctuation or scripts with limited word spacing, including broader Unicode-based punctuation handling for many languages.
- Chromium Runtime Support: Added support for the Brave browser runtime, improved Chrome/Edge/Brave fallback behavior from the Google TTS For NVDA settings category, and clarified that Microsoft Edge WebView2 Runtime is required only when Microsoft Edge is used.
- Documentation Improvements: Added GitHub README guidance for setting custom Chrome, Edge, and Brave executable paths, including accessible Windows GUI steps, and expanded Edge WebView2 troubleshooting in both the add-on help and GitHub documentation.
- Settings Accessibility: Added an unassigned Input Gestures command for opening Google TTS For NVDA settings directly, improved status fields so screen readers announce their labels and full messages more reliably, and made the synth settings ring announce the automatic language profile notice instead of changing voice values while the feature is enabled. This keeps profile-managed voice parameters compatible with NVDA's normal Speech Settings.
- Voice Selection & Reliability: Added clearer Voice and Variant selection, safer voice warm-up, improved Voice Manager package handling, more responsive speech cancellation, safer voice package import, and corrected regional language names such as English (Nigeria).
Version 0.3 (2026-07-12)
- Chromium Browser Runtime Selection: Added an option to choose a supported Chromium browser runtime directly in NVDA settings (NVDA Menu → Preferences → Settings → Google TTS For NVDA), including Google Chrome and Microsoft Edge.
- Connection & Cache Stability: Moved browser profile storage to
AppData\Local to preserve compiled WASM cache across NVDA restarts and automatically hide background browser helper windows.
- Google TTS Voice Manager Enhancements: Added a Filter by language dropdown, package usability and dependency status, safer removal of packages that would leave no usable voices, quieter progress announcements, improved keyboard navigation and focus management for screen readers, and automatic detection and cleanup of orphaned voice packages.
- Speech Responsiveness & Reliability: Fixed cut-off speech on the first utterance after NVDA startup or synthesizer switching, reduced speech synthesis latency, and improved speech interruption handling.
- Expanded Voice Catalog: Integrated 180 Google TTS voice packages and normalized language codes (160 packages are fully downloadable and usable immediately, while 20 packages are currently not yet compatible with the WASM engine).
- Localization & Vietnamese Translation: Implemented a full localization system and added complete Vietnamese translations for the user interface and documentation.
Version 0.2 (2026-07-03)
- Expanded the voice catalog to over 100 voice options, adding 40+ new language/dialect packages and Google Natural voice variants.
- Upgraded the WASM TTS engine to version 20260625.1.
- Reordered voice packages alphabetically by locale code for easier navigation.
Version 0.1.5 (2026-07-02)
Last edited on 2026-07-30