The API you are looking for is
walkers/math_shifter.js::sync and getDescription.
The two items below would pertain to the current iteration of ChromeVox/AndroidVox and can be added in a day or less:
With some tweeks (setting the host as Android), the AbstractWalker interface can be used to |sync| and then |getDescription| a node by using a |CursorSelection| object (similar to a Dom range).
You can then include this subset of files (just follow the Closure deps) and provide the API you need.
In order to support the relation in your markup, we would need to annotate the description (internally an Array of |NavDescription| objects) as they were being processed with the corresponding MathML. This isn't hard, but requires time.
Any update on APIs to ChromeVox that allow us to better leverage the MathML to TTS-ready text functionality in ChromeVox?
Also, though not needed immediately, we would like an option to the API to put IDREFs on the MathML elements, which synchronize with IDREFs in the text. For example, feeding in MathML to the API would generate two outputs:
MathML with IDREFs:
<math display="block" id="mathform">
and TTS-ready text/html with IDREFs:
<span id='math1-1'>a</span> <span id='math1-2'>divided by</span> <span id='math1-3'>b</span> <span id='math1-4'>+</span> <span id='math1-5'>2</span>
Our goal will be able to then pass these IDREFs to MathJax, so we can get corresponding IDREFs in the SVG elements whose style/color we can change as the text is spoken.