-
-
Notifications
You must be signed in to change notification settings - Fork 654
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
Fix SAPI 4 driver #17599
Fix SAPI 4 driver #17599
Conversation
…rings and WaveOut device IDs.
Could you confirm what the experience is like when in secure mode? both on the secure desktop, or with the environment variable set. |
I guess we will have the same issue as the add-on store warning (#15261), i.e. the warning may be shown various times, maximum one time per profile. |
Also, in the UG, the SAPI4 paragraph says:
Should we add here that SAPI4 usage in NVDA is deprecated and will be removed in the future? |
For the user, does this warning dialog have any practical effect? As far as I know, many Chinese users rely on this synthesizer. |
@cary-rowen |
Hi @zstanecic I'm not complaining, I just thought about what effect this dialog can have on end users, so I made the above comment. I'd love to talk about the current state of TTS in Chinese, although it's a bit off topic, and it probably deserves a separate discussion. Regarding the AISound you mentioned, it may be just a temporary solution:
Regarding IBM Viovoice TTS:
Regarding Eloquence: Of course, for me, Vocalizer is my only choice. As for Sapi5 and oneCore they are really slow to respond. In summary, response speed is important. New technologies and new TTS are of course developing, but as you can see, Microsoft's natural voice is not yet supported. Although it can be supported through sapi5 through the Natural Voice Adapter, it is still limited by The response speed is not suitable for long-term use. Hope this will be clearer |
Hi @cary-rowen, It is very interesting to hear the history about chinese speech synthesizer and what exists, what's popular and widely used. |
@cary-rowen thank you for the questions. We have chosen to add this dialog as, while it may be irritating, we believe the experience of this being a surprise to users would be worse. Many users do not regularly read the changelog, which is not always translated into their language, so this is more likely to be noticed. Regarding TTS support, does eSpeak-ng have support for Chinese languages? I see the following options in NVDA with eSpeak:
Notwithstanding users' dislike of the sound of eSpeak (which is of course valid), are these voices unsatisfactory in other ways? For example, in English eSpeak just reads Chinese characters as "Chinese letter", does Chinese eSpeak have proper support for Chinese writing? Do other TTS engines support more Chinese languages? |
@LeonarddeR I've switched to using |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Greate overall, just some minor suggestions.
In Japan, there is a SAPI4 speech engine developed more than 20 years ago that is still preferred by users today. According to recent server logs of the Japanese version of NVDA, 7% of users who have opted to send data are using the SAPI4 driver. It is important to clearly communicate the necessity of discontinuing SAPI4 support, as well as the benefits that will come in exchange for its removal. |
Co-authored-by: Sean Budd <sean@nvaccess.org>
@SaschaCowley your original warning message states "Using this speech synthesizer may pose a security risk. ".
I wonder what the basis for that is? I found a couple CVEs regarding SAPI, but neither specified which version, though one was likely 4 and one likely 5, given which Win versions they targeted. But both of those are long patched.
Are we just assuming there may be security concerns because of age, or is there something to go on?
I have no interest in preserving SAPI4, I merely question the basis for invoking the specter of security.
|
@XLTechie our current policy is to not reveal details of a security risk until the flaw is fully patched out of NVDA. As such we cannot provide more information until SAPI4 has been fully removed |
# Conflicts: # user_docs/en/changes.md
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reads well
Link to issue number:
Fixes #17516
Summary of the issue:
After the move to exclusively Windows core audio APIs, the SAPI4 driver stopped working.
Description of user facing changes
The SAPI4 driver works again.
A warning is shown the first time the user uses SAPI4 informing them that it is deprecated.
Description of development approach
Implemented a function to translate between MMDevice Endpoint IDs and WaveOut device IDs, based on this Microsoft code sample.
Added a config key,
speech.hasSapi4WarningBeenShown
, which defaults to False.Added a synthChanged callback that shows a dialog when the synth is set to SAPI4 if this config key is False and this is not a fallback synthesizer.
Testing strategy:
Ran NVDA, and used it with SAPI4. Changed the audio output device to ensure audio was routed as expected.
Known issues with pull request:
When first updating to a version with this PR merged, if the user uses SAPI4 as their primary speech synth, they will be warned about its deprecation in the launcher and when they first start the newly updated NVDA. This is unavoidable as we don't save config from the launcher.
The dialog is only shown once per config profile, so may be missed by some users.
Other options I have considered include:
The warning dialog is shown after SAPI4 is loaded. In the instance that the user is already using SAPI4, this is correct behaviour. In the case of switching to SAPI4, perhaps a dialog should appear before we terminate the current synth and initialise SAPI4.
Code Review Checklist:
@coderabbitai summary