Skip to main content


Hi, @tspivey, @jcsteh or anyone else who may know:
Is there any current way to get #NVDASR to honor Aria Live Region Assertive, such that new events interrupt speech?
When using the web-based screen reader mode of the Ableton Move with NVDA, you have to wait for the full text before the next event is spoken. Really annoying when quickly turning knobs and such. This doesn't happen with Voiceover on iOS or Mac OS, though it is slower to initially respond.
This entry was edited (3 weeks ago)
in reply to Patrick Perdue

I thought this was supported these days, but it seems it isn't. There are challenges in how it should be supported - arguably, assertive messages should interrupt polite messages but not other assertive messages, which wouldn't help this use case - but regardless, the fact is that it isn't supported. See github.com/nvaccess/nvda/issue… for more details. @tspivey
in reply to Patrick Perdue

Tagging @chikim as well. Once, he came up with a fix for Spitfire Audio's web player that you just threw into the console and it made it picked up by screen-readers.
in reply to Andre Louis

@FreakyFwoof @chikim I mean, you could give the live region a role of alert. That would result in interrupting speech, but it would also say "alert", which would be a bit annoying.
in reply to Jamie Teh

@FreakyFwoof @chikim To do that, you could run this in the web console, assuming there is only 1 live region:
document.querySelector("[aria-live]").role = "alert";
in reply to Jamie Teh

@FreakyFwoof @chikim Well, that makes it say "alert" before every utterance, as you said, but it doesn't make it any more responsive, because new alerts don't interrupt old ones.
in reply to Patrick Perdue

@FreakyFwoof @chikim Ah. Yeah, I guess that would be true now, since they get queued at the same priority level, which is technically more correct according to the spec. Hmm.
in reply to Jamie Teh

@FreakyFwoof @chikim I can tell you that there is work within ARIA to replace ARIA live regions with a new API which is a lot easier to understand and use and should solve problems like this, but that doesn't help you right now because said API is not yet finished, let alone shipping in any browsers.
in reply to Patrick Perdue

@FreakyFwoof @chikim Try this. I had some code for adding the immediate flag to things sent through the API to improve responsiveness a bit. Now it also does that for live regions and should cancel on assertive, though I don't know what else it'll break in your case. dropbox.com/scl/fi/jwef7t5u1k3…
in reply to Tyler Spivey

@chikim Well I can safely say that works nicely. No idea if it will break other stuff in the meantime but easy enough to fix with NVDA+5 if you need to.
Thanks.
in reply to Andre Louis

@FreakyFwoof @chikim I hack the dom all the time for things like this. Works really well for keeping an ear on an ongoing tennis match, for example
in reply to Tyler Spivey

is there a list of things this actually does/adds to NVDA? I notice it's not an official addon, so no real documentation.
Just so I know really.
Also, since it does work very well, can I share this to the Ableton Move group?
I'm sure we're not the only people who'd benefit from this.

@BorrisInABox @jcsteh @chikim

in reply to Andre Louis

@FreakyFwoof @chikim Here's what it does:
1. Modifies the API that programs use to make NVDA speak to immediately pump, improving responsiveness similar to NVDA issue #14928. For this use case, this isn't needed, but I figured I'd put it in the same addon to avoid having two of them. I've been running with this change for months and haven't noticed anything breaking.
2. Modifies the function that speaks ARIA live regions. If it gets a politeness level of assertive, it cancels speech before speaking. I also added the immediate pumping while I was there.
I can take 1 out without breaking anything. Pumping immediately in my (mostly unscientific) tests with my old gesture timing addon brings the time from pressing a key in Chrome to the response of a live region down from ~30 MS to ~12. I can also revert that.

I'm fine with it being shared.

in reply to Tyler Spivey

@chikim @FreakyFwoof Ah, you mean the NVDAHelper part? Damn, I missed that one when I was auditing for stuff that needed an immediate pump.
in reply to Jamie Teh

@chikim @FreakyFwoof Yep. I originally did that because I wanted to get tdsr working on Cygwin, and Cygwin added just enough of a delay that it was noticeable.