2017-06-09 66 views
1

TTS UtteranceProgressListener的新回调函数onRangeStart()会让我们例如突出显示较长词组的单词,就像TTS引擎所说的那样。回调在Android API参考中定义为https://developer.android.com/reference/android/speech/tts/UtteranceProgressListener.html#onRangeStart(java.lang.String,int,int,int),但是我找不到任何关于如何实际定义短语中的范围的信息,当应用程序将短语(例如,句子)发送到TTS语音生成引擎。Android O new TextToSpeech onRangeStart()回调

这些“范围”究竟是什么以及它们如何定义?或者它们是否预先定义为“单词”或任何与空格分隔的内容?

更多信息:我用过Android模拟器Ø创造onRangeStart()回调在我的TTS的应用程序,用于从谷歌TTS设置不同的声音,看看是否有范围被自动定义和回调将被调用。没有。也许范围必须以某种方式定义在“params”中speak()调用?

+1

我也报告过缺少定义Google问题跟踪器字级突出显示范围的文档的问题,请参阅我的报告及其回复:https://issuetracker.google.com/issues/62484359 – gregko

+0

现在Android 8 Oreo发布时,如果使用Google TTS产品的英语TTS语音,我会在每次发言时在onRangeStart()中获得回调。最后,我将能够在我的TTS应用程序中实施口头单词突出显示! – gregko

+0

这是26以前的API的支持库吗? – rraallvv

回答

0

Google尚未记录此功能,对issue filed in their tracker的最新回应是“我们已将此推迟至未来版本,但现在将其暂时开放。”

同时通过在我的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) 

这将是有益的,如果从谷歌有人告诉我们说正式“范围”只是文字,至少目前是这样。