Metadata
- Source
- FLUID-6635
- Type
- Bug
- Priority
- Critical
- Status
- Open
- Resolution
- N/A
- Assignee
- N/A
- Reporter
- Justin Obara
- Created
2021-06-28T14:30:01.688-0400 - Updated
2021-07-14T12:23:16.537-0400 - Versions
-
- 3.0
- Fixed Versions
- N/A
- Component
-
- Prefs Framework
- Self Voicing
Description
While the domReader doesn't work properly, the selection reader doesn't appear to have any issues with playback.
Steps to reproduce:
- Open the Prefs framework demo
- Open the prefs editor
- Enable text-to-speech
- In the Orator widget click the play button
- Notice that the play button turns into a pause button but nothing is self voiced
- Open the Orator demo
- Click the play button
- Notice that the content is self voiced but the word highlighting doesn't appear
Environments
Chrome 91
Comments
-
Justin Obara commented
2021-06-28T17:06:38.925-0400 It seems that chrome is not synthesizing long text ( about 4100+ characters ). It essentially just freezes and doesn't fire any events. Also they don't seem to be firing the boundary events either.
This can be demonstrated with this codepen example: https://codepen.io/jobara/full/oNWNwRo
Demo has been updated to allow for switching the voice used. This shows the Google provided voices have the issue, but the system supplied voices work as expected.
However, with Chrome, it returns an empty array of voices on the first invocation. In the codepen example I used an interval and a promise to poll for them.
-
Justin Obara commented
2021-06-29T09:19:15.630-0400 I've filed an issue against Chromium. https://bugs.chromium.org/p/chromium/issues/detail?id=1224880
-
Justin Obara commented
2021-06-29T09:31:48.850-0400 To me this seems like an issue with the voices (speech synthesizers) that Google supplies with Chrome. The system supplied ones seem to work fine. That leaves us with a few options:
- Wait for Google to fix the issue
- Not sure when this will happen.
- Chuck text to a size that will be read properly.
- Would not fix issue with highlighting, there really isn't a work around for that while using the Google provided voices.
- It would be difficult to parse the text as context matters for speech synthesis. For example how do you pronounce "read" without context? And chunking rules would also need to be language dependent to try to maintain the proper grammar and context.
- Do not use any of the default (Google provided) synthesizers
- Unfortunately the available synthesizers vary across platforms and browsers. We'd need retrieve the list of voices and then parse through to find one that matches the given language. Synthesizers aren't provided for every possible language, so in some cases we may still need to use a Google supplied one and/or come up with our own fallback rules. Additionally, getVoices() behaves odd in Chrome, as noted in the first comment about how I had to devise my own function using a promise and interval to poll for the voices.
- Wait for Google to fix the issue
-
Justin Obara commented
2021-07-05T13:28:45.260-0400 For now we're waiting on Google to fix the bugs with the voices.