TTS UtteranceProgressListener 的新回调函数 onRangeStart() 可以让我们突出显示 TTS 引擎朗读的较长短语中的各个单词。回调在 Android API 参考中定义:https://developer.android.com/reference/android/speech/tts/UtteranceProgressListener.html#onRangeStart(java.lang.String https://developer.android.com/reference/android/speech/tts/UtteranceProgressListener.html#onRangeStart(java.lang.String、int、int、int),但当应用程序将短语(例如句子)发送到 TTS 引擎进行语音生成时,我无法在任何地方找到有关如何实际定义短语范围的信息。
这些“范围”到底是什么以及如何定义它们?或者它们被预先定义为“单词”或用空格分隔的任何内容?
更多信息:我使用 Android O 模拟器并在我的 TTS 应用程序中创建了 onRangeStart() 回调,使用 Google TTS 设置中的不同声音来查看是否自动定义了任何范围以及是否会调用回调。没有什么。也许范围必须以某种方式在 talk() 调用的“params”包中定义???
谷歌仍未记录此功能以及对此的最新回应在他们的跟踪器中提交的问题 https://issuetracker.google.com/issues/62484359是“我们已将其推迟到未来的版本,但目前仍处于开放状态。”
同时,通过在我的 TTS 应用程序中实现 onRangeStart() 回调并使其显示调试输出,我发现“范围”只是单词。仅使用 Google TTS 中的英语语音时,我会看到此回调命中,到目前为止我尝试过的 Google 或其他公司的其他 TTS 语音尚未实现此功能。例如,朗读一句话:“这是一个要朗读的句子”。在 onRangeStart() 中产生以下输出:
onRangeStart(avar-1) start=0, end=4, frame=275 (This)
onRangeStart(avar-1) start=5, end=7, frame=3575 (is)
onRangeStart(avar-1) start=8, end=9, frame=6270 (a)
onRangeStart(avar-1) start=10, end=18, frame=7810 (sentence)
onRangeStart(avar-1) start=19, end=21, frame=18535 (to)
onRangeStart(avar-1) start=22, end=26, frame=21285 (read)
onRangeStart(avar-1) start=27, end=32, frame=25795 (aloud)
如果谷歌的有人正式告诉我们“范围”只是单词,至少目前如此,那将会很有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)