FLUID-6635: Orator's domReader does not properly selfVoice and highlight content in Chrome

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
  1. 3.0
Fixed Versions
N/A
Component
  1. Prefs Framework
  2. 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:

  1. Open the Prefs framework demo
  2. Open the prefs editor
  3. Enable text-to-speech
  4. In the Orator widget click the play button
  5. Notice that the play button turns into a pause button but nothing is self voiced

  1. Open the Orator demo
  2. Click the play button
  3. 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.
  • Justin Obara commented 2021-07-05T13:28:45.260-0400

    For now we're waiting on Google to fix the bugs with the voices.