2017-06-09 3 views
1

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の新しいTextToSpeech onRangeStart()コールバック

これらの「範囲」は正確に何であり、どのように定義できますか?あるいは、それらは「単語」や空白で区切られたものとしてあらかじめ定義されていますか?

さらに詳しい情報:私はAndroidのOエミュレータを使用して、私のTTSアプリでonRangeStart()コールバックを作成し、任意の範囲が自動的に定義し、コールバックが呼び出されますかどうかを確認するためにGoogleのTTSセットから別の声を使用していました。何もない。おそらく、範囲はspeak()コールの "params"バンドルで何らかの形で定義されなければならないでしょうか?

+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) 

Googleからの誰かが「範囲」正式ことを私たちに語った場合、それが役立つだろう、少なくとも今のところは、単に言葉です。

関連する問題