7

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

有没有其他人遇到过这个?

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

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

4

2 回答 2

2

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

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

测试以确保句子听起来没有什么不同,但我认为在截止长度后自动解析下一个句子(或单词,如果需要)会起作用。

于 2011-09-13T16:23:04.487 回答
1

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

希望这可以在某个时候对某人有所帮助

于 2012-08-29T14:16:50.663 回答