Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.Sign up
Fall back to OneCore synth on Windows 10 if a 3rd party synth fails to load #9025
Link to issue number:
Mentioned in pr #8006
Summary of the issue:
If NVDA is configured to load a 3rd party synth and the loading of that synth fails, NVDA then falls back to eSpeak. However on Windows 10, it really should fallback to OneCore, as OneCore is the default synth for NVDA on Windows 10.
Description of how this pull request fixes the issue:
In synthDriverHandler there is now a defaultSynthPriorityList which contains the names of all synths (in priority order) that should be tried by default. E.g. oneCore, espeak, silence.
Set NVDA to a 3rd party synth (NVSpeechPlayer). Disabled the add-on, restarted NVDA, NVDA switched to oneCore.
Known issues with pull request:
Change log entry:
I don't understand the following: "3. Silence doesn't load, index is 0, go to OneCore". As silence is in the list, and is the last item, nextIndex would be len(defaultSynthPriorityList). Then in the case where nextIndex is len(defaultSynthPriorityList) nothing happens and setSynth returns false. This was always the case. I'm not sure there is really anything we can do here. And really we are sort of expecting that espeak and silence will never fail, which I think is fair enough.
leonardder left a comment
Ah yes, you're right. I missread the code and thought that index would return to 0 instead of len(defaultSynthPriorityList). Go ahead, and sorry for the misunderstanding.