-
-
Notifications
You must be signed in to change notification settings - Fork 662
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
Add the ability to determine if NVDA is speaking in NVDA Controller.dll #5638
Comments
Hi there, Can you provide use cases for this (such as parameters you need and how this functionality can benefit other developers)? Thanks. |
Achieving synchronization of speech with something else, for example, sound. A major category of applications that needs this are audiogames. For example, during turn-based combat, you would want to synchronize the announcements of actions taken by units with sound playback. There are probably other use cases though. |
Actually NVDA Japanese team received this kind of request from application developers. However, I am not satisfied with our work so far. Firstly, it is difficult to cover various speech synthesizers to support the API. Secondly, such API does not work correctly for some cases. The last point is that, with my observation, NVDA developers prefer 'universal solutions' rather than enhancing NVDA-dependent ControlClient API. Anyway, I am happy to discuss the issue here. |
This isn't currently possible. NVDA core does not actually have this information at the moment. #4877 might provide the basis for this. Even if it does, doing this would be extremely low priority for us, but that doesn't stop someone else from taking it up. |
Is there anyone still considering this? I can imagine that it would help alot in implementing Sound and speech based Support for diagrams. |
Probably not. This is non-trivial. |
@Neurrone could you please fill the feature template for this one? Please include use cases and how you imagine this feature to work and which alternatives you think of. As of now, I will close this and hope that you address Joseph's comment above in the feature template. Thanks. |
@Adriani90 Have you looked at the entire conversation, or just at the first two commends? The issue is valid, and even no one expressed interest in fixing it at the moment there is no reason to close it in my opinion. It isn't created according to the feature request template, but the commends above explained why it is needed for some. |
Oh sorry my browser didn't display all comment for what ever reason. Reopenning. |
Some guidance on this in https://github.com/nvaccess/nvda/wiki/Speech-Refactor-Use-Case-Notes It should be pretty trivial to add a function to do this. Checking |
This feature would be very useful in my case. I'm making a service that parses a game screen and outputs a description of where the player is and what's around them (for example: west wall, north town). This is done continuously, so the service needs to know if NVDA has finished speaking what was sent to it before sending the updated game screen. |
this feature would be really useful |
I'd like feedback from people on how they intend to use this. The simplest mechanism would be adding a function such as Is there a desire to be notified, or be able to poll for some arbitrary "amount" of speech remaining? It isn't clear how we would define an "amount" of speech to external software. I'd prefer not going down this path without strong justification. |
I'm currently writing a prototype to provide speech to NVDA Controller using SSML. It allows the function to execute in blocking mode, which basically means that the function blocks until speech is done. As SSML supports marks in the provided sequence, you can also register a callback that is called for every mark in the speech. @Neurrone Would that cover your case? |
Yeah, that would be more than sufficient. |
) Fixes #11028 Fixes #5638 Summary of the issue: The NVDA Controller client has been stable for a long time, but it lacked support for modern speech features, such as priority and callbacks. Description of user facing changes None. Description of development approach Added the following functions to the controller client: nvdaController_getProcessId: To get the process id (PID) of the current instance of NVDA the controller client is using. nvdaController_speakSsml: To instruct NVDA to speak according to the given SSML. This function also supports: Providing the symbol level. Providing the priority of speech to be spoken. speaking both synchronously (blockking) and asynchronously (instant return). nvdaController_setOnSsmlMarkReachedCallback: To register a callback of type onSsmlMarkReachedFuncType that is called in synchronous mode for every <mark /> tag encountered in the SSML sequence provided to nvdaController_speakSsml.
See title.
The text was updated successfully, but these errors were encountered: