Google TTS For NVDA v0.4
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 their ending.
- Safer Voice Package Import (d8be9f3): Existing voice packages are copied with staging, size checks, SHA-256 validation, and atomic replacement to reduce the risk of broken package files.
- Release and Translation Hygiene (9595240, b3cfb71, bf1649c): Translation and binary file handling were tightened so release builds stay cleaner and generated files create less noise during maintenance.