nvaccess / nvda

NVDA, the free and open source Screen Reader for Microsoft Windows
https://www.nvaccess.org/
Other
2.11k stars 637 forks source link

NVDA Audio and Braille Display Lag when Typing Quickly #10970

Closed trumpton closed 4 years ago

trumpton commented 4 years ago

Steps to reproduce:

On Windows 10 - this was done on a brand new ASUS laptop, uninstalled and turned off all virus features, installed NVDA 2019.3.1

  1. Run NVDA, open notepad, and type characters with a 1 second between
  2. Then 20 type characters with 1/4 second between

Actual behavior:

  1. With 1 second between characters, each character is spoken and the braille display updates after each character
  2. With 1/4 second between characters, after the last character, there is a large pause (2-4 seconds), then the last character is spoken and then the braille display updates.

This happens with a Brailiant BI40, and also the build in NVDA Braille Viewer.

I've captured this in a video here: https://www.youtube.com/watch?v=Qh1GYTNvHfo And in a different session, I captured a possibly relevant bit of the log file here nvda-log.txt

Expected behavior:

Would expect the output of (2) to behave exactly the same as (1).

System configuration

NVDA installed/portable/running from source:

NVDA Installed

NVDA version:

Version 2019.3.1 Windows One Core voice: Hazel Auto language / dialect switching - off Trust voice's language - on Use spelling functionality - off Vanilla input / output tables speak typed characters - on speak typed words - off speech interrupt for typed characters and enter - on handle keys from other applications - off

Windows version:

10

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

None

Other information about your system:

Windows 10, Brand new ASUS machine. All virus scanning uninstalled. Windows defender disabled. Only piece of software installed is NVDA.

Other questions

Does the issue still occur after restarting your computer?

Yes, very predictable

Have you tried any other versions of NVDA? If so, please report their behaviors.

No, however this version of NVDA on a different Windows 7 computer works correctly

If addons are disabled, is your problem still occuring?

Haven't enabled any addons

Did you try to run the COM registry fixing tool in NVDA menu / tools?

Yes, no difference

Adriani90 commented 4 years ago

Which windows 10 version is this? 1909?

Adriani90 commented 4 years ago

And does this happen also with eSpeak? I think there is something on your PC that slows down the system. I cannot reproduce this on my Dell laptop.

Could you please provide a list with all programs installed on your PC?

Adriani90 commented 4 years ago

Some hints for asus laptops which could help:

trumpton commented 4 years ago

Thanks for getting back so quickly ....

Summary

This is Windows 1903. Yes, it happens with E-Speak too, but a little less pronounced. I've created a new video with various configurations, including without NVDA running, and the same version of NVDA on an old Lenovo Windows 7 machine.

Video is here

I've also downloaded and tried the latest 2020 version, and the lag happens with that too.

It is vey noticeable when you press and hold the backspace to delete characters, that there is a massive lag.

Response to Actions

And does this happen also with eSpeak? - Yes, but there is a noticeable difference (see video) I think there is something on your PC that slows down the system. I cannot reproduce this on my Dell laptop - looks like it to me too, but all I have is the stock software delivered with the PC as it is brand new. Could you please provide a list with all programs installed on your PC - Attached Uninstall MCafe - Uninstalled People report much faster performance after uninstalling the asus cloud storage and other asus unwanted programs - Removed all Update the ATX drivers - All drivers in device manager are 'the latest', is that what you meant? Check your autostart to see which programs are starting when you boot your windows (i.e. install CCleaner and go to "Tools", then to "startup" - Attached CCleaner outputs

Machine Configuration

I set up a new asus laptop for my wife, and noted this problem. I bought a brand new asus machine (almost the same model) for myself with the intention of removing windows and installing Linux, but before that I did the following:

Details

ASUS Zenbook UX333F Windows 10 v1903 (OS 18362.720)

Asus System Firmware v10.1.2.308 Intel Display Audio Driver v10.27.0.6 Keyboard Driver v10.0.18362.1 Realtek Audio Driver v6.0.8859.1

CCleaner outputs attached. CCleanerReports.zip

Adriani90 commented 4 years ago

@trumpton I mean the aTK driver. The current version is ATK Package 1.0.0050 (32-bit) ATK Package 1.0.0061 (64-bit)

You can find them here: https://ivanrf.com/en/latest-asus-drivers-for-windows-10/

Regarding the startup, I saw that you have a task called asus system analysis. i recommend to disable that, there are some very negative articles about it regarding security and performance impacts. You can also try to disable the ATK package as well, this is the driver which activates the keyboard light and other things like the f key functions (i.e. controling the volume with f keys etc.). But this is up to you if you want to try it. It might also increase your performance. this is what I have also seen on Lenovo laptops.

Adriani90 commented 4 years ago

@trumpton I will close this issue for now since it is not really related to NVDA but rather to something that slows down your system. Please continue to comment on it if you find a solution or if you think this is a problem in NVDA. We can reopen it later on if required.

feerrenrut commented 4 years ago

@trumpton Thank you for the video, it demonstrates the problem clearly. I'm not sure, but it looks like you might be on battery power in the video. It may be that windows has enabled battery saving mode or reduced performance can you check these settings and also test with the laptop connected to power? This might help to rule it out.

trumpton commented 4 years ago

Sorry for not replying more quickly, I'm slightly distracted with 3D printing Covid-19 PPE.

I have exactly the same problem on two machines, on battery or on mains power. Both are ASUS UX333 machines - the slightly (15%) slower I5 has various software installed, including anti-virus, and the faster I7 (which is the one I ran the test on) is a brand new machine with as much uninstalled or removed as I can find.

Another thing I have done is to turn off as many NVDA features as possible, such as spell checking, emoticons, and also switch NVDA to highest priority in the task manager, and I have seen no difference in the buffering lag, so I feel that the processor has enough grunt to satisfy NVDA's needs.

The machine responds perfectly until I start NVDA (i.e. there is no lag between keyboard and screen) - now I realise that this doesn't mean that NVDA is at fault, and there could be an interaction between the drivers and the output.

I still have to update the ATX drivers as advised, and will do it as soon as I can.

Do you know what software the key presses are passing through, e.g. driver -> xxx OS layer -> NVDA -> yyy OS layer -> blah -> application, and are there any logging tools I could use to record the messages, showing where they are being buffered / delayed?

Ta, Steve

Neurrone commented 4 years ago

Have you tried using an app like silenzio, which plays a silent sound to ensure that the audio device never goes to sleep?

feerrenrut commented 4 years ago

The machine responds perfectly until I start NVDA (i.e. there is no lag between keyboard and screen)

This wasn't how I interpreted the video. From the video I understood the following:

The jittery performance can be seen in the video at 0:55 the 'a' key is held down while in notepad. You have to look carefully, but there are moments where notepad does not update smoothly.

Please confirm you have checked the performance settings in windows, unfortunately there are several places to check:

  1. Left click the battery / power icon in taskbar
  2. Select best performance
  3. Click battery settings check the percentage for battery saver mode.
  4. In the "Find a setting" search box, type 'performance' and select "adjust the appearance and performance of windows"
  5. Select "Adjust for best performance"

Looking at your expectations again, it's worth clarifying part of this is somewhat expected.:

  1. With 1 second between characters, each character is spoken and the braille display updates after each character
  2. With 1/4 second between characters, after the last character, there is a large pause (2-4 seconds), then the last character is spoken and then the braille display updates.

Would expect the output of (2) to behave exactly the same as (1).

A key press will "interrupt" the current speech, since the information being spoken is no longer valid and new speech is expected. The difference you hear is likely due to the amount of time it is taking to process the key press and create the speech and braille. However 2-4 seconds is a long time! Looking at the log I can see this reflected in the "timeSinceInput" logging, we may need to add more detailed logging to see if there is any particular component causing the problem.

Testing with with the following is not intended as a final solution, but it could help to narrow down the problem:

If this performs well, reintroduce each item independently and test again. IE. Enable speech only and test, then disable speech and enable braille only and test.

trumpton commented 4 years ago

Thanks both for the responses ...

@Neurrone: didn't find silenzio, but ran the test with a radio station playing in the background (I suspect that would also stop the audio subsystem from going to sleep). I saw no difference unfortunately.

@feerrenrut: Based on your spotting the jittery performance, I also tried the same test again whilst setting the keyboard repeat delay (first character) and didn't see a difference whether I set the delay to long or short.

BUT something interesting happens when I mess around with the repeat rate.

  1. The rate was set to 100% in all tests done so far.
  2. Setting it to 25%, i get the same results.
  3. Setting it to 10%, it is responsive and updates properly when holding keys, although there is still a lag if you type particularly fast.
  4. Setting it to 22% and holding a key down, I get the first 6 characters updating on the braille display, and then nothing until I release the key - then there is a delay, but it is significantly shorter than if I set the repeat rate to 100% (1 second versus 7 seconds).

I'll capture this on a video, and I will also go through your other actions you have set me, but thought this interesting enough to share right now.

S.