AndroidのTTSエンジンで「文書化されていない異常」を観察しました。話すテキストが長すぎる(4K文字を超える)場合、その特定の発話のonUtteranceCompleted()は到着しません...
他の誰かがこれに出くわしましたか?
これは既知のバグまたは制限ですか?
これを回避するために何ができるでしょうか?
AndroidのTTSエンジンで「文書化されていない異常」を観察しました。話すテキストが長すぎる(4K文字を超える)場合、その特定の発話のonUtteranceCompleted()は到着しません...
他の誰かがこれに出くわしましたか?
これは既知のバグまたは制限ですか?
これを回避するために何ができるでしょうか?
私はスピーチの小さなチャンクを好むので、制限に気づいていませんでした(一時停止またはアクティビティが一時停止されている場合に便利です)。
talkを呼び出すと、queueModeに次のコマンドを使用して、キューの最後に新しい発話を追加できます。TextToSpeech.QUEUE_ADD
文が異なって聞こえないことを確認するためにテストしますが、カットオフ長が機能した後、次の文(または必要に応じて単語)で自動的に解析するだけだと思います。
これがあなたのケースで役立つかどうかはわかりませんが、同様の状況で、以下に示すように、TextToSpeech.ACTION_TTS_QUEUE_PROCESSING_COMPLETEDにIntentFilterを備えた匿名のブロードキャスト受信機を使用しました。
filter = new IntentFilter(TextToSpeech.ACTION_TTS_QUEUE_PROCESSING_COMPLETED);
receiver = new BroadcastReceiver(){
public void onReceive(Context p1, Intent p2)
{
if (p2.getAction().equals(TextToSpeech.ACTION_TTS_QUEUE_PROCESSING_COMPLETED) && tts != null)
{
//
//code here
}
}
};
context.registerReceiver(receiver, filter);
tts = new TextToSpeech(context, this);
これがいつか誰かの助けになることを願っています