如果收到的TTS太长,onUtteranceCompleted()会丢失

时间:2011-07-28 17:28:20

标签: android text-to-speech onutterancecompleted

我刚刚在Android的TTS引擎中观察到“未记录的异常”:如果要说的文本太长(大于4K个字符),则该特定话语的onUtteranceCompleted()将永远不会到达......

还有其他人遇到过这个吗?

这是一个已知的错误还是限制?

可以做些什么来解决这个问题?

2 个答案:

答案 0 :(得分:2)

我不知道这个限制,因为我更喜欢较小的语音块(如果暂停或活动暂停,则很有用)。

当你打电话给speak时,你可以使用这个为queueMode将新的话语添加到队列的末尾: TextToSpeech.QUEUE_ADD

测试以确保句子听起来不同,但我认为只有在截止长度起作用后才能自动解析下一句(或者如果需要的话)。

答案 1 :(得分:1)

我不确定这对你的情况是否有帮助,但在类似的情况下,我使用匿名广播接收器和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);

希望这可能对某人有所帮助