【发布时间】:2021-03-14 16:42:22
【问题描述】:
我正在尝试使用 Android Text to Speech 功能来阅读文档中的文本并在大声朗读时突出显示单词。我在我的 TTS 对象上使用 setOnUtteranceProgressListener() 设置了一个话语进度侦听器,并在其中覆盖了 onStart()、onDone() 和 onRangeStart() 等函数。期望当我的文本被大声朗读时,onRangeStart(String utteranceId, int start, int end, int frame) 将在 TTS 服务即将用给定的 utteranceId 说出指定范围的话语时给我回调。
我要阅读的文档由多个段落组成,每个段落可以有多个句子。例如:示例段落如下所示:
你好,你好吗?我希望有机会对此进行更多讨论。让我知道你的想法。
期望对于字符串中的每个单词,我应该在 onRangeStart() 中获取事件,但它没有发生。我现在得到的是:
onRangeStart utteranceId: 100000, start: 0, end: 5, frame: 120, text: Hello
onRangeStart utteranceId: 100000, start: 6, end: 11, frame: 6060, text: world
onRangeStart utteranceId: 100000, start: 13, end: 16, frame: 18720, text: how
onRangeStart utteranceId: 100000, start: 17, end: 20, frame: 23760, text: are
onRangeStart utteranceId: 100000, start: 21, end: 24, frame: 26040, text: you
在此之后,onRangeStart() 中不再有回调。我无法理解的是,它在大约 2 周前运行良好,我一直在测试该应用程序,但它突然停止工作。我还检查了 TextToSpeech、UtteranceProgressListener 等文档,但最近没有记录任何更改。
有人可以帮我找出导致此问题的原因吗?
【问题讨论】:
-
我也为此创建了一个 Google 问题。谷歌团队在 2020 年 12 月的最后一周解决了这个问题,但似乎他们在新的 TTS 版本中再次做出了同样的改变。这是问题所在:issuetracker.google.com/issues/174605128?pli=1
标签: android text-to-speech highlight