So, after JAWS, NVDA is also kissing goodbye to SAPI 4 TTS engines, in 2026.
The support for Microsoft Speech API version 4 synthesizers is planned for removal in NVDA 2026.1. Any remaining users of SAPI4 speech synthesizers are encouraged to choose a more modern speech synthesizer.
https://github.com/nvaccess/nvda/pull/17599
@NVAccess
Fix SAPI 4 driver by SaschaCowley · Pull Request #17599 · nvaccess/nvda

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

GitHub
@amir If anyone is using a SAPI 4 synthesizer and cannot switch (E.G. because it is the only synth they are aware of in their language), please do let us know. We don't want to leave anyone stuck using an older version purely because of this, and if we can help track down a more modern resource which will fit the bill, then we're happy to help.
@NVAccess @amir Some low resource languages doesn't have even no synthesizers at all. Some of the synthesizers are out of date, and some stopped their development. For some languages there is RHVoice. And... i am promoting it as a maintainer of these languages i maintain, respectively.
@asael @amir Very true - and it is possibly some of those low resources languages for which the ONLY synthesizer is a SAPI 4 one - and it's those I'd love to find out about - we may or may not be able to do anything about it, but we can boost the search for a more modern synth a little wider or for people who may be able to contribute to solutions (such as a new language for eSpeak-NG for instance - I know it's not everyone's taste but it's the one anyone can contribute to)
@NVAccess @amir Anyone can also contribute to RHVoice. IF somebody needs a help for creating a language module and exact steps, he can reach to me, and we can work together, if he or she is willing to learn.
@asael @amir Thank you, that is good to know. I'll let you know if I have contact with anyone you might be able to help
@NVAccess @amir I am currently working on two new languages with my team: belarussian and hungarian.
@NVAccess @amir no problem. you have my contact, because i am also an NVDA translator for croatian and polish... Btw, recently i have received my diploma in polish language and literature and russian language and literature. That means, that my title is now: university master in polish language and literature and university master in russian language and literature. Without NVDA, i wouldn't be able to achieve this, and without the open-source tools.

@asael @amir Congratulations Zvonimir, that's a fantastic achievement!

And we do very much appreciate the work you put in for NVDA users around the world.

@NVAccess @amir Acapela and Vocalizer are not something that can be used decently. They have errors in pronunciation, plus manufacturers are not always willing to fix these. That means, there are corporate-like automatic generated answers.
@asael @NVAccess @amir ah darn. This is going to make me very, very sad for WinTalker Hungarian, since it worked so much more stable under Sapi4 than Sapi5 (for some reason the Sapi5 version can crash the entire NVDA process.) At least there's hope with the RHVoice version, but I don't much enjoy Nuance there so today I mostly use the WinTalker voice at max 100 rate for a higher quality speech that's great at pronouncing certain words like a native speaker.
@Tamasg @NVAccess @amir but... as RHVoice gets improved for your language, and if we get more feedback as a team, we can try to improve thinks.
@amir @NVAccess what about the people with processing difficulties that that’s literally the only thing they can comprehend? I don’t personally know of anyone like that, but I know it’s possible because certain people struggle if they are forced to use any speech synthesizer other than the one they know for 1,000,000% sure they can understand.

@evilcookies98 @amir That's why I asked anyone with a specific example to reach out, so we can look at options with them.

In order to continue using SAPI 4, it would need to be updated to WASAPI. As noted by Matt Campbell elsewhere in this thread, that may be possible, and we could consider a PR for that. Or someone could likely relatively easily create an add-on even with the current implementation. At the end of the day, if someone really needed, they could stay with an older version of NVDA

@NVAccess @amir I myself probably won’t be updating past that point just because that’s yet another choice technology is taking away. Not pointing fingers at you. Not something I use frequently, but I like having the option to use it. Used to be my daily driver back when I started working with windows. If I’m pointing fingers, did anybody with this one? It’s Microsoft for being so darn uncooperative
@evilcookies98 @NVAccess As saddening as it is, this is the nature of technology. And don't forget that JAWS devs ditched SAPI 4 support a long while ago, without even bothering to ask people about the consequences of the decision.
@NVAccess @amir I didn’t even think Jaws ever had it. They’ve depended on their own synthesizer for so long, the fact that they even have sapi five blew my mind.
@evilcookies98 @NVAccess They depend on Eloquence just as NVDA depends on ESpeak-NG, Windows OneCore voices, etc.
@NVAccess @amir first time I handle jaws was in 2013 or 2014 and I couldn’t find squat in the way of being able to change it
@evilcookies98 @NVAccess JAWS has always had the ability to alter TTS engines as in the past it had SAPI 4 support as well as RealSpeak/ Solo support, apart from Eloquence.
@amir @NVAccess must’ve been very well hidden 12 years ago. I surely couldn’t find it. I know where it is now but that’s now.
@evilcookies98 @NVAccess LOL - I don't think it has been hidden. It's always been the same like their TTS selection hot keys.

@amir @NVAccess Holy shit, the _sapi4.py file still credits Serotek. I wonder how much of my old code, from 2007 at the latest, is still left.

I did some more work on Serotek's SAPI 4 driver after we transitioned from Python to Lua, in like 2009. If you locate the TTS engines in the registry and instantiate them directly and implement the COM interface that the engines use to play audio, it might be possible for SAPI 4 support to survive the transition from waveOut to WASAPI.

@matt @amir Matt, Glad you're still interested and looking at it :) Would updating SAPI 4 support to WASAPI be something you are interested in doing? I don't think we're able to invest the time in it ourselves, but we would be willing to look at a PR if someone (such as yourself) was interested in working on it.
@matt @amir (it would need to be secure and easily maintainable for us to incorporate it - or the other option which would continue support, is an add-on which provided the functionality - either using WASAPI or waveOut or some other method)
@NVAccess @matt @amir I imagine it would be fairly straightforward for someone to just shove the current sapi4 driver in an add-on and be done with it. It would suffer from all the current bugs it has, still use WinMM and not benefit from any of the new stuff in NVDA's audio output code, but if someone wants it badly enough, it would work.
@amir @NVAccess rather, I encourage someone to create a SAPI4 supporting add-on. ha ha
@Tamasg @NVAccess @amir I believe if a future SAPI version be released in the future...

@amir @NVAccess Here's my attempt to make SAPI 4 synth support WASAPI.

https://github.com/nvaccess/nvda/pull/17718

As different SAPI 4 engines behave differently, it might not work well with every SAPI 4 voice. I don't have many SAPI 4 voices to test, so those who are interested can try that out with their SAPI 4 voices to see if that works well. If anyone finds an issue, please report it on GitHub.

Also I wonder, could this make SAPI 4 support in NVDA survive longer?

@amir Good news for SAPI 4 users! Now SAPI 4 support is no longer planned for removal in NVDA 2026.1, and all warning messages has been removed. Also, now SAPI 4 voices use WASAPI as well, meaning that features such as audio ducking and leading silence trimming can now work with SAPI 4 voices. Check the newest alpha version alpha-35416, and please report issues you find on GitHub!
@gexgd0419 Thanks for your awesome TTS-oriented work affecting the upcoming NVDA 2025.1 beta! I'm running the alpha now.
@gexgd0419 @amir what changed? Were there just enough angry people to shift the objective or something?
@evilcookies98 @gexgd0419 Angry people? Don't think so. An NVDA contributor decided to modernize SAPI 4 support, and that's all about it. Remember that anger usually doesn't work here as, for instance, JAWS, a paid product, ditched SAPI 4 support a long while ago to the dismay of many users.
@gexgd0419 @amir thanks for your awesome work with the TTS stuff in Nvda 2025.1
@Aryan @gexgd0419 @amir How does it work with WASAPI? What PR was this done in?
Make SAPI4 voices use WASAPI by gexgd0419 · Pull Request #17718 · nvaccess/nvda

Link to issue number: None Summary of the issue: This PR makes the built-in SAPI4 synthesizer use WASAPI to output audio, so that old code related to WinMM can be removed entirely. Description of u...

GitHub
@gexgd0419 Thanks for your great work. A question though, is it normal that with SAPI4, audio ducking always ducks and never restores the volume of ducked audio, even when it is configured to duck only when speaking? Tested one of the Serbian SAPI4 voices, and that's the behaviour I experience here.
@NikJov This is not normal. Audio ducking should either work normally, or not work at all (if the voice does not support custom audio output). But as different SAPI4 engines have different behaviors, I need to get the voice you are using to reproduce and investigate the problem.
@gexgd0419 I'll see what can be done as it is a commercial voice, but I found out something potentially useful. Pressing CTRL causes audio to return to normal volume after a few seconds, so it is as if the voice is continually speaking even when there's no speech. It's an old synth though so it just being buggy is also a possibility.
@NikJov I added verbose logging for SAPI4 in PR #17774. This doesn't fix things, but you can now enable the "synthDriver" debug log category in advanced settings to get a more verbose log file. You can try the snapshot version, then send me the log so that I may be able to understand the problem better.
@gexgd0419 Thank you, I'll try to get a log as soon as possible, although one user using the same voice as me (Wintalker voice) already reported on GitHub about the experience being significantly worse now, with some audio crackling introduced recently. I observe the same.
@NikJov Does the latest snapshot version of PR 17817 make the audio better?
@gexgd0419 Yes, it's resolved for me now. This is the same synthesizer lpintes on GitHub was reporting about, so I didn't want to make duplicate reports. Thanks.