Skip to content
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

Narrator feature has very high latency on Windows #9855

Open
pitermach opened this issue Dec 14, 2019 · 6 comments
Open

Narrator feature has very high latency on Windows #9855

pitermach opened this issue Dec 14, 2019 · 6 comments

Comments

@pitermach
Copy link

Description

The menu narration feature takes an extremely long time to speak on Windows as compared to Mac OS.

Expected behavior

When accessibility is turned on and you move the highlight from option to option, it should be spoken almost immediately, which is the case when using Retroarch on Mac OS (tested on a 2014 Mac Mini with a Core I5 processor and Mac OS Catalina)

Actual behavior

On Windows, there is a rather large delay. When you press a key to move the cursor from one option to another, speech is stopped immediately which is great, but it takes over a second for the new menu item to be spoken. On my computer (Core I7-6700, Geforce960 with Windows and Retroarch running off of an SSD) the delay is about a second. On a friends computer running an AMD A8-4555M, this delay is closer to 3 seconds. Both of these systems are running Windows 10. This delay happens both when using a keyboard to navigate the menus as well as a USB gamepad (Logitech F510 in xInput mode). Other things I tried to see if they would improve the situation include lowering the audio latency, changing the audio driver from xAudio to wasapi and SDL, and the video driver from GL to D3d 12. Interface sounds and game audio do not have this delay.
When using the Windows voices in other applications (NVDA and Narrator) they have almost no delay, so the issue seems to be how Retroarch is accessing them.

Steps to reproduce the bug

  1. In RetroArch, enable accessibility, either from commandline or the menus.
  2. Use the keyboard or gamepad to navigate the menus and observe how long it takes for the speech to keep up.

Version/Commit

  • RetroArch: Tested nightly builds from December 11th and December 13th 2019 with the same results.

Environment information

  • OS: Windows 10 build 18362.
@BarryJRowe
Copy link
Contributor

This is a bit tricky since the delay is not present on all windows installs (my windows 8 runs it fine). However, we can try using a dll instead of the power shell way. This is the relevant doc: https://docs.microsoft.com/en-us/uwp/api/windows.media.speechsynthesis.speechsynthesizer

@Phoenix1991-lab
Copy link

How am I supposed to use a dll for the narrator in Windows 10 for retroarch? Thank you!

@pitermach
Copy link
Author

@Phoenix1991-lab you can't, this isn't something that's been implemented yet.
@BarryJRowe That sounds like something worth trying. If you're considering using a dll, perhaps it might also be worth considering using Tolk

The advantage of this aproach rather than just using SAPI directly is that tolk sends the spoken text to the scrreen reading software that someone is using, or to SAPI if it can't find one. This is better because the speech will come out with whatever settings a user has configured in the screen reader to fit their personal preference. It's also worth noting that the current SAPI implementation in RetroArch also seems to completely ignore what voice is set to default in Windows and always uses Microsoft David which makes other interface languages not sound right.

As a sidenote, Tolk also offers a function to check if any screen reading software is currently running. This could be useful to automatically turn on the menu narration if someone starts Retroarch while also running a screen reader, it would greatly simplify first-time setup for a blind user as there would be no need to memorise the button sequence to navigate the menus or read up on the command line.

@blindndangerous
Copy link

I tried to post this through email, but I guess it didn't go through. Would this be of any help?
https://github.com/dkager/tolk

@Phoenix1991-lab
Copy link

Phoenix1991-lab commented Dec 22, 2019 via email

@pitermach
Copy link
Author

@Phoenix1991-lab Again, this is not something you can do yet because it's not implemented. @blindndangerous and myself are nearly throwing potential suggestions around to solve the unresponsive speech on Windows. The only time you'd be able to use any of them is when the Retroarch team implements one of them.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants