Authors: Patrick Barboza patrickbarboza774@gmail.com and Wendrill Aksenow Brandão wendrillaksenow@gmail.com
This add-on implements NVDA compatibility with the MicroPower DeltaTalk synthesizer. It includes two integrated modules, which will be described in detail below
DeltaTalk is the first high-quality speech synthesizer available for the Portuguese language. It was created by the Brazilian company MicroPower Software, specifically for the Virtual Vision screen reader, in 1997.
- Supports voice, speed, pitch and volume settings.
- Supports changing the Capital pitch change percentage
- It is very lightweight and responsive
- It has better control of voice features, such as speed and pitch, compared to the Sapi 4 version.
- Reading is more accurate, without glitches, slowdowns or interruptions.
The add-on can be downloaded and installed from the NVDA add-on store. Just search for "MicroPower DeltaTalk TTS".
After installation, go to NVDA's speech settings (NVDA+Ctrl+V), press the "Change" button, and select the MicroPower DeltaTalk TTS synthesizer.
You can also quickly access the "Select Synthesizer" dialog with the shortcut NVDA+CTRL+S.
As of version 0.4, it is no longer necessary to copy the DeltaTalk data files to the NVDA program folder. These will be loaded from the folder of the add-on itself.
With the improvements introduced in the most recent versions, the synthesizer's stability has been significantly enhanced. However, since this is an older component (nearly 30 years old), problems may still occur on some newer systems.
Important Note on Compatibility
The DeltaTalk 2026.x series has been redesigned for the new 64-bit NVDA and requires NVDA 2026.1 or later.
If you need to continue using NVDA 2025.3 or an earlier version, you should install version 0.4.2, which remains compatible with the 32-bit version of NVDA.
Some older synthesizers that run through synthDriverHost32, including DeltaTalk, may require the Microsoft Visual C++ Redistributable Package to function properly. If the synthesizer does not load or remains silent, install the official Microsoft redistributable packages and restart NVDA.
- Microsoft Visual C++ Redistributable X86 (recommended)
- Microsoft Visual C++ Redistributable X64 (optional)
DeltaTalk includes its own symbol dictionary, which is activated automatically when the add-on is loaded.
Due to the architecture of the NVDA screen reader, this symbol dictionary is shared with other compatible synthesizers, such as Eloquence and eSpeak.
If you only want to use the default symbol dictionary provided by NVDA, you can deactivate the "DeltaTalk Symbol Dictionary". To do this, go to the NVDA settings and, in the "Speech" category, uncheck the corresponding item in the list of extra dictionaries for character and symbol processing.
Please note that this setting will be automatically reverted if, when restarting NVDA, DeltaTalk is set as the default synthesizer (which will cause the dictionary to be reactivated).
In addition, DeltaTalk includes an internal pronunciation dictionary, which contains more than 100,000 pronunciation rules for Portuguese language words. This dictionary is included in the add-on package and is essential for the synthesizer to work. It will be updated regularly with new pronunciation rules as the add-on is updated.
Starting with version 0.3, the add-on includes initial support for secondary audio devices.
With the improvements introduced in version 0.4.2, this feature has been completely redesigned and is no longer experimental; It is now the default method for audio playback, replacing the previous method that used the resources provided by the DeltaTalk DLL itself, which has been completely removed. This has resulted in greater stability for the synthesizer and also allows for the use of secondary audio devices, which are now fully supported.
However, due to technical limitations (specifically related to the 32-bit subprocess), the audio ducking mode (Shift+NVDA+D) is not currently supported.
The functionality of the "Pausing Information" add-on is now integrated into DeltaTalk as "Virtual Vision Mode".
See more about this feature in the "Virtual Vision Mode" section below.
DeltaTalk now includes a category in the NVDA settings dialog that allows you to adjust some of the add-on's operating options.
Initially, only a button to adjust the options for the new "Virtual Vision Mode" are available. In the future, more options will be added that will allow you to adjust the reading mode and the operation of the synthesizer itself.
Version 0.4.2 was initially used only during the internal development of DeltaTalk. It was in this version that Tyler Spivey carried out a major overhaul of the synthesizer driver, resolving several long-standing issues related to audio playback, resource management, and continuous reading, as well as laying the groundwork for the future migration to the 64-bit version of NVDA. Although it was not published in the NVDA add-on store, this version is now available for download as the last version compatible with NVDA 2025.3 and other 32-bit versions.
This project was made possible thanks to the great generosity of Mr. Denis Renato da Costa and MicroPower Software, to whom we extend our most sincere gratitude. It was thanks to the availability of the DeltaTalk SDK and its development APIs that this project became a reality.
We would also like to extend a very special thank you to Tyler Spivey, whose extensive overhaul of the synthesizer driver helped resolve several long-standing issues related to audio playback, resource management, continuous reading, and the overall stability of DeltaTalk.
Similarly, we would like to express our sincere gratitude to our friend Nuno Costa from Portugal, whose collaboration was essential during the migration of the add-on to the new 64-bit version of NVDA. In addition to the various improvements made to the code, he was responsible for researching and implementing communication between NVDA and the 32-bit subprocess using the "synthDriverHost32" mechanism, thereby enabling DeltaTalk's compatibility with NVDA's new architecture.
We would also like to thank our friends who contributed during the closed beta testing phase by offering suggestions, conducting tests, and reporting bugs.
We would also like to thank all users who try out this add-on, and we ask that you report any issues you encounter using the contact information provided at the beginning of this document.
Last but not least, we’d also like to thank Claude (Anthropic), ChatGPT (OpenAI), and Grok (xAI). These artificial intelligence tools played an important role in various phases of the project’s technical and conceptual development, supporting research, solution implementation, code analysis, and documentation.
-
The main new feature in this version is compatibility with the new 64-bit version of NVDA.
- Since the original engine (Dtalk32.dll) is 32-bit and cannot be recompiled, the driver has been split. Now, a "bridge" (proxy) runs in NVDA's 64-bit main process and communicates with the full logic, which remains in a 32-bit subprocess.
- Within the 32-bit subprocess, virtually all "log.debug" and "log.error" messages have been removed (the synthDriverHost32 environment is more restricted than that of the full NVDA). In practice, this makes it harder to diagnose problems that occur specifically within that subprocess, since fewer details are recorded in the NVDA log. However, this is a measure we have adopted temporarily while we explore safe ways to reintroduce them.
-
The keyboard shortcut for "Virtual Vision Mode" has changed from "NVDA+Shift+V" to "NVDA+Control+Shift+V" to avoid conflicts with the "Vision Assistant Pro" add-on.
This version focused on fixing serious structural bugs and modernizing the way the synthesizer processes audio.
- A formatting error in the code that prevented NVDA from properly closing the DLL instance when switching speech synthesizers has been fixed. This led to the creation of "orphan instances" that would accumulate and cause the synthesizer to lock after a few changes.
- Direct playback mode has been removed. DeltaTalk now uses NVWave (PCM buffer generation) exclusively, which resolves long-standing issues with secondary audio devices.
- The experimental setting "Use NVWave for audio playback" has been removed from the add-on's settings panel (including the warning dialog box that says "Experimental feature; may cause problems"). It no longer made sense as an option, since it had become the only way to play audio.
- A lock ("dll_lock") has been added to DLL calls to prevent conflicts between the audio and NVDA threads.
- It is no longer necessary to divide long texts into 100-character blocks; The engine now natively processes text of any length.
- Accented capital letters are now normalized in spelling mode using the new "normalize_for_spelling" function which makes it easier to read, letter by letter.
- During continuous reading (Say All), the system cursor now correctly follows the text.
- New DLL configuration constants have been added to the code, although they are not yet active for the end user.
- The minimum version of NVDA has been updated from 2023.1 to 2025.1; The latest tested version has been updated from 2025.1 to 2025.3.
- In "Virtual Vision Mode", the "MENUITEM" has been added to the list of control types for which descriptions are announced (menu items with descriptions are now read aloud).
- This version only fixes a problem where the synthesizer couldn't be loaded because one of the main files was missing.
-
The functionality of the old "Pausing Information" add-on was integrated into DeltaTalk as a global plugin called "Virtual Vision Mode".
- The current version is identical to the last version of the original add-on, but will be updated regularly.
- The installTasks.py file now includes a routine that checks for the presence of the old add-on and removes it if it is installed.
-
A new settings panel has been created for DeltaTalk and added to the NVDA settings dialog. This panel will be expanded with new configuration options over time.
-
The add-on now works completely independently, eliminating the need to copy the DeltaTalk data files to the NVDA program folder.
- The corresponding routines for copying and removing these files have been removed from the main code of add-on and from the installTasks.py file.
- This should solve most of the problems reported by some users, but we cannot guarantee that they will actually be solved.
-
A logic has been implemented that checks the synthesizer's internal pronunciation dictionary (Brport.lng) and automatically copies it to the NVDA program folder if changes to the original file included in the add-on package are detected.
-
An integrated symbol dictionary has been included for DeltaTalk, allowing it to interpret punctuation marks in it's own way.
-
The add-on now uses "log" (imported from "logHandler") instead of "logging", for better integration with NVDA.
-
Experimental support has been included for audio playback using the "nvwave" system, with audio generation in multiple blocks and asynchronous playback.
- This activates initial support for secondary audio devices and audio ducking mode (Shift+NVDA+D).
- This feature is still disabled by default and can be activated for testing via the new option "Use NVWave for audio playback" in the NVDA settings dialog, on the "DeltaTalk" category.
-
DeltaTalk's error messages now use friendlier translations, in addition to the DLL's internal error codes.
-
Routines have been implemented to remove the DeltaTalk data files from the NVDA program folder if the add-on is uninstalled. Note that administrator privileges may be required.
- This is the first public release, with some important bug fixes.
- The routines that copy DeltaTalk data files to the NVDA program folder have been corrected so that administrative access is only requested when necessary. This eliminates the need to run NVDA as an administrator when installing the add-on.
- The "installTasks.py" file now supports internationalization to maintain consistency with the main synthesizer code.
- More log messages have been added to the main synthesizer code to make it easier to debug and identify possible problems.
- The documentation for the add-on (which was previously just an initial draft) has been rewritten and updated.
- The old codes were removed from the add-on because they didn't work and were obsolete.
- Translations into Brazilian and european Portuguese have been added for the add-on messages.
-
First private test version, with several bug fixes that prevented the synthesizer from working.
-
A routine has been created that copies the DeltaTalk data files to the NVDA program folder during the installation of the add-on, which eliminates the need to keep the Sapi 4 version installed.
- A logic has also been added that checks for the presence of these files in the NVDA program folder before loading the synthesizer, and copies them again if they are missing.
- Note that for this to work, NVDA must be run as administrator.
-
Initial support for internationalization has been added to the main synthesizer code.
Virtual Vision mode (originally "Pausing Information") is an extension that inserts pauses during the reading of control information, providing a more detailed and paused reading of control and status information when the focus switches between interface elements.
This feature was inspired by the Brazilian screen reader "Virtual Vision", known for its paused way of announcing information, improving user comprehension.
This module is integrated with DeltaTalk to guarantee a complete reading experience similar to that of Virtual Vision.
If you want to use it with other synthesizers, you can install the old "Pausing Information" add-on, which is perfectly compatible with any synthesizer being used by NVDA. Note that, for compatibility reasons, it is not recommended to keep both add-ons installed.
You should also remember that the old "Pausing Information" add-on has been discontinued and will not receive future updates, so it may lose compatibility with new versions of NVDA.
Paused reading is based exclusively on the symbol level. Hyphens are added to pause the reading of information. If the symbol level is set to anything above "some", the hyphens will be read aloud.
Likewise, if the symbols (specifically the hyphen) are not correctly adjusted in the punctuation/symbol pronunciation dialog, the pauses may not occur.
To ensure that pauses work as expected, go to the punctuation/symbol pronunciation dialog and make sure that the hyphen is set to be sent to the synthesizer when it is below the symbol level.
- Announcement of control types and states: The extension announces the type of control (e.g. "checkbox", "Radio button", "menu", "edit box") and its status (e.g. "checked", "pressed", "unavailable", "busy").
- The announcement is made in a paused manner, similar to what was done by the Virtual Vision screen reader.
After installing the MicroPower DeltaTalk add-on for NVDA, Virtual Vision Mode works automatically, allowing a more detailed and paused reading of information about the types and states of controls, as long as the DeltaTalk synthesizer is active. No additional configuration is required.
As mentioned, no additional configuration is required when using this extension. The default settings and integration with the DeltaTalk synthesizer provide a screen reading and navigation experience in Windows very similar to that of Virtual Vision.
However, various configuration options are available, allowing you to adjust the operation of the extension to your liking or needs.
To access the Virtual Vision Mode settings, open the NVDA settings dialog, go to the "DeltaTalk" category and press the "Virtual Vision Mode..." button. The following options are available:
- Enable Virtual Vision Mode: If you uncheck this option, the extension will be completely disabled and all other configuration options will be unavailable. You can also activate/deactivate Virtual Vision Mode using the NVDA+Shift+V shortcut. This shortcut can be modified from NVDA's "Input gestures" dialog, in the "DeltaTalk" category. Note that the add-on will automatically disable Virtual Vision Mode when you switch to another synthesizer and will enable it again when you switch back to DeltaTalk.
- Allow custom translations for the names of control types and states: If this option is checked, the extension will use an internal dictionary to translate the names of the types and states of the controls. Otherwise, NVDA's internal translations will be used. Note: For now, this option only has a major impact on Portuguese languages. In English, there are no significant differences.
- Message Extension: This group of radio buttons controls the amount of information to be spoken.
- Short: Only essential NVDA navigation information will be spoken.
- Medium: In addition to NVDA's essential navigation information, the extension will add some more information. For example, when an object has a shortcut key associated with it, you will hear the information "shortcut" before the shortcut key is announced. You will also hear the "value" information before announcing the value of the sliders and scroll bars.
- Long: The extension will add another set of information in addition to the above. When you navigate through the items in a list, tree view or menus, you will hear the corresponding information according to the type of item. The extension will also warn you whenever a window is activated. This is the default setting.
- Custom: With this option, you can individually control all the information announced by the extension.
By setting the message extension level to "Custom", you can individually adjust all the information announced, for example, you can deactivate the information you don't want or don't need to be announced. You can do this via the "Configure" button. This button is only available when the custom message extension level is selected. Clicking this button opens a configuration dialog for the custom level, with the following options:
-
Select the controls to be announced: In this list, you can activate or deactivate all the control types supported by Virtual Vision Mode. For deactivated controls, only the name and status (if applicable) will be announced.
-
Other additional messages: This group of controls contains the following options:
- Announce active windows: Announces whenever a window is activated.
- Announce shortcut before object shortcut keys: When an object has an associated shortcut key, it announces the "shortcut" information before the corresponding shortcut key is announced.
- Announce value before slider and scrollbar values: When focusing on a slider or scroll bar, it announces the "value" information before the value is announced.
- On web pages, paused reading only works when NVDA's focus mode is activated. Otherwise, navigating with the arrows causes the controls to be read using NVDA's native methods.
- In some cases, the announcement of states may fail or be incorrect.
- When a checkbox is checked, unchecking it causes the "checked" state to be announced incorrectly.
- When a toggle button is pressed or a list item is selected, deactivating the button or deselecting the item does not announce them.
- This fault only occurs the first time you uncheck a checkbox, deactivate a toggle button or deselect a list item with the Spacebar or Control+Spacebar.
- To be sure, you can use the NVDA+Tab shortcut to have the information repeated by NVDA. In this case, the status will be announced correctly.
- Some types of menus, such as those in Thunderbird, read a little strangelly. The informations "submenu" and "unavailable" are announced several times, even when it is not necessary. In these cases, when navigating through Thunderbird menus and other similar menus, it is recommended that Virtual Vision Mode is temporarily disabled (via the shortcut key) until a solution to this problem is found.
- In some types of dialog boxes that do not have an associated title, their content is not read automatically. In these cases, you can use NVDA's object navigation mode to explore the dialog box or have NVDA try to read it using the NVDA+Tab shortcut.
- The announcement of active windows, in certain cases, causes this information to be announced incorrectly, for example, when opening a combo box with the Alt+Down Arrow shortcut or when opening a context menu such as the one in Google Chrome.
- At certain times, occasional errors may appear in the NVDA log, but they do not interfere with operation. These errors will be corrected in the next updates.
- The "internal_link" status (which identifies links to the same page) has been added to the list of states to be announced.
- A few more controls have also been added to the list of control types to be announced.
- A logic has been created that checks for the presence of the old version of the add-on and removes it before installing this new version.
- Fixed an issue where Settings for the custom message extension level were lost when NVDA was restarted or when its language was changed.
- The code of the add-on has been simplified and unnecessary and repeated parts have been removed to make it easier to maintain.
- The add-on is now available in the NVDA add-ons store. Just search for "Pausing Information".
- The add-on functionality has been integrated into DeltaTalk as "Virtual Vision Mode", so this will be the last stand-alone version.
- Fixed an error with the announcement of active windows that caused the first item not to be announced when focusing on the taskbar or switching between tasks with the Alt+Tab shortcut. This problem also affected some items in normal windows, which were ignored.
- First official release version.
- A customized message extension level has been implemented, which allows you to individually control all the information announced by the add-on.
- A new configuration option has been created to completely disable the add-on.
- An enable/disable shortcut key has also been adedd, which is especially useful for temporarily disabling the add-on in certain cases.
- Private test version, initially released as 1.1 and later updated to 1.2.
- A new configuration option has been created that allows you to choose whether or not the add-on should translate the names of the types and states of the controls.
- A logic of message extension levels has been implemented - long, medium and short. At the long level (default), all possible information will be spoken. At the medium level, some information will be suppressed and at the short level, only the essential information will be spoken.
- New methods of reading control states were created to correct a problem in which certain states were not read.
- A new interface has been created for the add-on, with the first concept of configuration options.
- An error has been fixed in which the description of certain objects and the contents of some dialog boxes were not read.
- Fixed a bug where the value of progress bars was not read automatically.
- Fixed a bug where links contained in e-mail messages and web pages could not be focused correctly.
- A problem with reading Excel cells has been fixed.
- A logic has been created to check whether the read-only status is relevant, in order to avoid unnecessary announcements.
- Completely rewritten version from the initial prototype, with several error corrections.
- A complete dictionary has been created with the names of the control types and states, with their respective translations, which will be updated as necessary.
- The documentation has been rewritten and updated.
- Initial prototype, created with very few resources and not yet very functional.
- Creation of the initial documentation.