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



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

还有人遇到过这个吗?

这是已知的错误或限制吗?

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

我没有意识到这个限制,因为我更喜欢较小的语音块(如果暂停或活动暂停则有用)。

当你调用speak时,你可以为queueMode使用this将新的话语添加到队列的末尾:TextToSpeech。QUEUE_ADD

测试以确保句子听起来没有不同,但我认为只要在截断长度后自动解析下一个句子(或单词,如果需要)就可以了。

我不确定这是否会对你的情况有所帮助,但在类似的情况下,我使用了一个匿名广播接收器与IntentFilter for TextToSpeech。ACTION_TTS_QUEUE_PROCESSING_COMPLETED如下所示

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

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

相关内容

  • 没有找到相关文章

最新更新