Update NVDA Controller client to support speaking SSML sequences (#15734)
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.