nvda icon indicating copy to clipboard operation
nvda copied to clipboard

SAPI 4. Digalo 2000 voices don't work with NVDA

Open sevapopov2 opened this issue 6 months ago • 16 comments

Preconditions:

Digalo 2000 voices are installed.

Steps to reproduce:

  1. Launch SAPI 4 driver.
  2. Open voice settings.
  3. 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:

Digalo 2000.log

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.

sevapopov2 avatar Jun 16 '25 09:06 sevapopov2

Will it work with "Use WASAPI for SAPI 4 audio output" disabled in advanced settings?

gexgd0419 avatar Jun 16 '25 09:06 gexgd0419

Unfortunately, no.

sevapopov2 avatar Jun 16 '25 09:06 sevapopov2

Does the voice work in an older version of NVDA, for example, 2024.4.2?

gexgd0419 avatar Jun 16 '25 09:06 gexgd0419

Hi,

Digalo newer worked correctly in the newer NVDA, even before 2025.1

zstanecic avatar Jun 16 '25 09:06 zstanecic

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.

sevapopov2 avatar Jun 16 '25 09:06 sevapopov2

Could you provide a download link so that I can test myself?

gexgd0419 avatar Jun 16 '25 09:06 gexgd0419

@sevapopov2 @gexgd0419 please do not distribute pirated software that breaches licenses here. It's legally risky and against GitHub TOS.

seanbudd avatar Jun 16 '25 10:06 seanbudd

@sevapopov2 @gexgd0419 please do not distribute pirated software that breaches licenses here. It's legally risky and against GitHub TOS.

Ok, sorry for that.

sevapopov2 avatar Jun 16 '25 11:06 sevapopov2

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?

gexgd0419 avatar Jun 16 '25 11:06 gexgd0419

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 avatar Jun 16 '25 12:06 sevapopov2

@sevapopov2 Please try this snapshot version from PR #18262 to check if the issue still exists. If so, please send the log file.

gexgd0419 avatar Jun 17 '25 02:06 gexgd0419

Hi, Here are 2 log files with the snapshot you provided. First with Wasapi enabled and second with disabled.

Digalo-snapshot-with-wasapi-enabled.log

Digalo-snapshot-with-wasapi-disabled.log

sevapopov2 avatar Jun 17 '25 08:06 sevapopov2

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".

gexgd0419 avatar Jun 17 '25 08:06 gexgd0419

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.

Digalo-snapshot-wasapi-enabled.log

Digalo-snapshot-wasapi-disabled.log

sevapopov2 avatar Jun 17 '25 09:06 sevapopov2

Please enable the logging category called "synthDriver" at the end of the advanced settings page, and get the log files again.

gexgd0419 avatar Jun 17 '25 09:06 gexgd0419

I can provide logs from NVDA 2024.4.2 for comparison if it can help.

sevapopov2 avatar Jun 18 '25 06:06 sevapopov2

@sevapopov2 Please try this snapshot version from PR #18262 to see if there's anything different.

gexgd0419 avatar Jun 19 '25 08:06 gexgd0419

Hello, Now Digalo doesn't work with wasapi enabled but works with wasapi disabled. Here are the logs:

Digalo-wasapi-enabled.log

Digalo-wasapi-disabled.log

Thank you!

sevapopov2 avatar Jun 19 '25 19:06 sevapopov2

@sevapopov2 Please try this snapshot version from PR #18262 to see if there's anything different.

gexgd0419 avatar Jun 20 '25 13:06 gexgd0419

Unfortunately, now SAPI 4 voices don't work with wasapi enabled and disabled.

Digalo-wasapi-enabled.log

Digalo-wasapi-disabled.log

sevapopov2 avatar Jun 21 '25 10:06 sevapopov2

@sevapopov2 Please try this build with WASAPI disabled and send the log file.

gexgd0419 avatar Jun 22 '25 03:06 gexgd0419

Here is the log.

Digalo-wasapi-disabled.log

sevapopov2 avatar Jun 22 '25 09:06 sevapopov2

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.

gexgd0419 avatar Jun 22 '25 10:06 gexgd0419

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.

Digalo-wasapi-disabled.log

sevapopov2 avatar Jun 23 '25 11:06 sevapopov2

@sevapopov2 Please try this build.

gexgd0419 avatar Jun 23 '25 15:06 gexgd0419

Hello, Sapi 4 voices work now with Wasapi disabled, I haven't tried with enabled. Here is the log.

Sapi4-wasapi-disabled.log

sevapopov2 avatar Jun 29 '25 09:06 sevapopov2

Hi @sevapopov2, does it work with WASAPI enabled? If it does, this will be considered fixed.

gexgd0419 avatar Jun 29 '25 14:06 gexgd0419

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.

Sapi4-wasapi-enabled.log

sevapopov2 avatar Jun 29 '25 18:06 sevapopov2

Please try this version.

gexgd0419 avatar Jun 30 '25 02:06 gexgd0419