2017-06-09 54 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) 

這將是有益的,如果從谷歌有人告訴我們說正式「範圍」只是文字,至少目前是這樣。