SAPI 4. Digalo 2000 voices don't work with NVDA
Preconditions:
Digalo 2000 voices are installed.
Steps to reproduce:
- Launch SAPI 4 driver.
- Open voice settings.
- Switch between Digalo 2000 voices.
Actual behavior:
Voices don't speak.
Expected behavior:
Voices speak. I am not sure if it is specifically NVDA's issue but exactly the same voices work in application called Balabolka which also supports SAPI4 voices.
NVDA logs, crash dumps and other attachments:
System configuration
NVDA installed/portable/running from source:
Portable.
NVDA version:
2025.1.
Windows version:
Windows 11 Pro 24H2 (26100.4349).
Other information about your system:
Other questions
Does the issue still occur after restarting your computer?
Yes.
Have you tried any other versions of NVDA? If so, please report their behaviors.
No.
If NVDA add-ons are disabled, is your problem still occurring?
Yes.
Does the issue still occur after you run the COM Registration Fixing Tool in NVDA's tools menu?
Yes.
Will it work with "Use WASAPI for SAPI 4 audio output" disabled in advanced settings?
Unfortunately, no.
Does the voice work in an older version of NVDA, for example, 2024.4.2?
Hi,
Digalo newer worked correctly in the newer NVDA, even before 2025.1
Does the voice work in an older version of NVDA, for example, 2024.4.2?
Yes, I have just checked, it works in NVDA 2024.4.2.
Could you provide a download link so that I can test myself?
@sevapopov2 @gexgd0419 please do not distribute pirated software that breaches licenses here. It's legally risky and against GitHub TOS.
@sevapopov2 @gexgd0419 please do not distribute pirated software that breaches licenses here. It's legally risky and against GitHub TOS.
Ok, sorry for that.
I have to set the language for non-Unicode programs to Russian to make the installer work though. The voice comes with a 15-day trial period, so no need to pirate the software actually.
I tried that in a Windows 10 virtual machine, but the voice is working with NVDA 2025.1 portable.
Could you try again with a freshly created portable copy of NVDA 2025.1, with default settings and no add-on, and see if the voice works?
If it still does not work, could you try disabling WASAPI for SAPI4, and send the log file for that too?
That is great that it works as trial! Here is the log with the fresh copy of NVDA 2025.1 portable and Wasapi disabled for SAPI 4. I switched the locale to English. Digalo-wasapi-disabled.log
@sevapopov2 Please try this snapshot version from PR #18262 to check if the issue still exists. If so, please send the log file.
Hi, Here are 2 log files with the snapshot you provided. First with Wasapi enabled and second with disabled.
Are you using the snapshot link I provided above?
The log file says:
Starting NVDA version alpha-36010,a9bcdffe x86
But when running the snapshot version, it should say:
Starting NVDA version pr18262-36850,3ceaef47 x86
Note that this snapshot is from a pull request that hasn't been merged yet, so it won't come out as an "alpha version".
Oh yes, sorry. I had 2 snapshots in the folder, one of them was alfa version of NVDA 2025.1 and I forgot about it and launched the wrong one. :) Everything should be correct now.
Please enable the logging category called "synthDriver" at the end of the advanced settings page, and get the log files again.
I can provide logs from NVDA 2024.4.2 for comparison if it can help.
@sevapopov2 Please try this snapshot version from PR #18262 to see if there's anything different.
Hello, Now Digalo doesn't work with wasapi enabled but works with wasapi disabled. Here are the logs:
Thank you!
@sevapopov2 Please try this snapshot version from PR #18262 to see if there's anything different.
Unfortunately, now SAPI 4 voices don't work with wasapi enabled and disabled.
@sevapopov2 Please try this build with WASAPI disabled and send the log file.
DEBUG - synthDrivers.sapi4.SynthDriverMMAudio.__init__ (12:03:06.282) - Sapi4ComThread (13008):
SAPI4: Initializing WinMM implementation
DEBUG - synthDrivers.sapi4.SynthDriverMMAudio.IUnknown_QueryInterface (12:03:06.284) - Sapi4ComThread (13008):
Querying for interface IAudio
DEBUG - synthDrivers.sapi4.SynthDriverMMAudio.IUnknown_QueryInterface (12:03:06.285) - Sapi4ComThread (13008):
QueryInterface returned E_NOINTERFACE
ERROR - unhandled exception (12:03:06.548) - MainThread (17500):
Traceback (most recent call last):
File "gui\settingsDialogs.pyc", line 1350, in __call__
File "synthDriverHandler.pyc", line 402, in changeVoice
File "synthDrivers\sapi4.pyc", line 1112, in _set_voice
File "synthDrivers\sapi4.pyc", line 298, in _wrapper
File "synthDrivers\sapi4.pyc", line 273, in invoke
File "synthDrivers\sapi4.pyc", line 239, in run
OSError: exception: access violation reading 0x00000000
This is interesting: QueryInterface(IAudio) returned E_NOINTERFACE, which caused the SAPI4 voice to crash on a NULL pointer. But SynthDriverMMAudio is already implementing IAudio.
@sevapopov2 Please try this build with WASAPI disabled and send the log file. Also you can try other SAPI4 voices to check whether this happens for other SAPI4 voices as well.
Here are the logs. I tried to enable Digalo and L&H TTS 3000 Russian voices. SAPI 4 doesn't start after reloading NVDA, but usually it is fixed by rebooting the PC.
@sevapopov2 Please try this build.
Hello, Sapi 4 voices work now with Wasapi disabled, I haven't tried with enabled. Here is the log.
Hi @sevapopov2, does it work with WASAPI enabled? If it does, this will be considered fixed.
I tried to switch voices with Wasapi enabled and here is what I noticed: When L&H TTS 3000 synthesizer is enabled and I switch voices from last to first they switch correctly. After that when I switch from first to last voice they don't work. Here is the log.
Please try this version.