【问题标题】:Android O new TextToSpeech onRangeStart() callbackAndroid O new TextToSpeech onRangeStart() 回调
【发布时间】:2017-06-09 15:24:45
【问题描述】:

TTS UtteranceProgressListener 的新回调函数 onRangeStart() 可以让我们例如突出显示较长短语的单个单词,就像 TTS 引擎所说的那样。回调在https://developer.android.com/reference/android/speech/tts/UtteranceProgressListener.html#onRangeStart(java.lang.String, int, int, int) 的 Android API 参考中定义,但是当应用程序将短语(例如句子)发送到用于语音生成的 TTS 引擎。

这些“范围”究竟是什么以及如何定义它们?还是它们被预先定义为“单词”或任何用空格分隔的东西?

更多信息:我使用了 Android O 模拟器并在我的 TTS 应用程序中创建了 onRangeStart() 回调,使用来自 Google TTS 集的不同声音来查看是否自动定义了任何范围,回调将是叫。没有。也许范围必须以某种方式在 speak() 调用的“参数”包中定义???

【问题讨论】:

  • 我还向 Google 问题跟踪器报告了缺少用于定义字级突出显示范围的文档的问题,请参阅我的报告及其回复:issuetracker.google.com/issues/62484359
  • 现在在 Android 8 Oreo 版本中,当使用来自 Google TTS 产品的英语 TTS 语音时,我确实会在 onRangeStart() 中为每个说出的单词获得回调。终于可以在我的 TTS 应用中实现口语高亮了!
  • 26 之前的 API 支持库中有这个吗?
  • 到目前为止,我还没有看到它添加到任何支持库中。如果您对此有更多了解,请分享。也许还值得向 Google 发布反馈以通过支持库在较旧的 Android 中提供此功能。
  • 感谢您的信息,...hmmm,我将搜索是否有相关的功能请求。

标签: android text-to-speech


【解决方案1】:

Google 仍未记录此功能,对 issue filed in their tracker 的最新回复是“我们已将其推迟到未来版本,但暂时保持开放状态。”

同时,通过在我的 TTS 应用程序中实现 onRangeStart() 回调并使其显示调试输出,我看到“范围”只是单词。我在仅使用来自谷歌 TTS 的英语语音时看到这个回调命中,到目前为止我没有尝试过来自谷歌或其他公司的其他 TTS 语音,尚未实施。例如,大声朗读一个句子:“This is a sentence to read aloud”。在 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)

如果 Google 的某个人正式告诉我们“范围”是简单的词,那将很有帮助,至少目前是这样。

【讨论】:

    猜你喜欢
    • 2020-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-11
    • 1970-01-01
    • 2021-03-14
    相关资源
    最近更新 更多