Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot load sapi 5 synthesizer #17512

Closed
burmancomp opened this issue Dec 13, 2024 · 8 comments · Fixed by #17513
Closed

Cannot load sapi 5 synthesizer #17512

burmancomp opened this issue Dec 13, 2024 · 8 comments · Fixed by #17513
Assignees
Labels
bug/regression component/speech p2 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority release/blocking this issue blocks the milestone release triaged Has been triaged, issue is waiting for implementation.
Milestone

Comments

@burmancomp
Copy link
Contributor

burmancomp commented Dec 13, 2024

Steps to reproduce:

Update to current alpha.

Actual behavior:

sapi5 synthesizer cannot be loaded anymore.

Expected behavior:

NVDA logs, crash dumps and other attachments:

ERROR - synthDriverHandler.setSynth (09:38:56.999) - MainThread (4020):
setSynth failed for sapi5
Traceback (most recent call last):
File "synthDriverHandler.pyc", line 483, in setSynth
File "synthDriverHandler.pyc", line 446, in getSynthInstance
File "synthDrivers\sapi5.pyc", line 140, in init
File "synthDrivers\sapi5.pyc", line 209, in _initTts
TypeError: '>=' not supported between instances of 'str' and 'int'
INFO - synthDriverHandler.setSynth (09:38:57.030) - MainThread (4020):
Falling back to previous synthDriver espeak

System configuration

NVDA installed/portable/running from source:

installed

NVDA version:

alpha-34782,82fefa5a (2025.1.0.34782)

Windows version:

w11 23h2

Name and version of other software in use when reproducing the issue:

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.

If NVDA add-ons are disabled, is your problem still occurring?

Does the issue still occur after you run the COM Registration Fixing Tool in NVDA's tools menu?

@irrah68
Copy link

irrah68 commented Dec 13, 2024

Same happens here. Windows 11 Pro 2024H2, NVDA's latest Alpha version, Mikropuhe 5.4 Sapi 5 Speech synthesizer.

@burmancomp
Copy link
Contributor Author

I added some log lines to bug description.
cc: @SaschaCowley

@zstanecic
Copy link
Contributor

I can reproduce this bug, too with the same log lines.

@SaschaCowley
Copy link
Member

@burmancomp , @irrah68, @zstanecic, I believe I have resolved this in #17513. If you're comfortable doing so, would you mind testing either from source or with the launcher once the AppVeyor build completes?

@SaschaCowley SaschaCowley added this to the 2025.1 milestone Dec 13, 2024
@SaschaCowley SaschaCowley self-assigned this Dec 13, 2024
@SaschaCowley SaschaCowley added bug/regression component/speech p2 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority triaged Has been triaged, issue is waiting for implementation. release/blocking this issue blocks the milestone release labels Dec 13, 2024
@zstanecic
Copy link
Contributor

@SaschaCowley will test from source now. it is fater to build.

@zstanecic
Copy link
Contributor

@SaschaCowley The I confirm that the sapi5 now loads properly.

@zstanecic
Copy link
Contributor

Tested on version source-fixSapi5-d76177c x86

@burmancomp burmancomp changed the title Cannot load sapi 5 synthisezer Cannot load sapi 5 synthesizer Dec 13, 2024
@irrah68
Copy link

irrah68 commented Dec 15, 2024

I downloaded the pr version and it worked ok. I started and finished nvda without problems, and Sapi 5 speech synthesizer was always loaded correctly.

SaschaCowley added a commit that referenced this issue Dec 15, 2024
Closes #17512
Fix-up of #17496

Summary of the issue:
After the removal of winmm support, SAPI5 synthesisers failed to initialise.
This is because we switched from integer-based IDs as used by winmm, to ID strings as used by Windows Core Audio.

Description of user facing changes
SAPI5 synthesisers now initialise correctly.

Description of development approach
Rather than calling `outputDeviceNameToID` to index into the audio outputs returned by SAPI, iterate over them and look for one whose `Description` matches the friendly name of the output device to use as stored in the user's config.

Testing strategy:
Tested loading SAPI5 with a number of output devices selected, and changing output devices with SAPI5 loaded.

Known issues with pull request:
None.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug/regression component/speech p2 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority release/blocking this issue blocks the milestone release triaged Has been triaged, issue is waiting for implementation.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants