Android 如果收到的TTS太长,则ONutternanceCompleted()将丢失

Android 如果收到的TTS太长,则ONutternanceCompleted()将丢失,android,text-to-speech,onutterancecompleted,Android,Text To Speech,Onutterancecompleted,我刚刚在Android的TTS引擎中观察到一个“未记录的异常现象”:如果要说的文本太长(超过4K个字符),那么对于那个特定的话语,就永远不会出现 还有其他人见过这个吗 这是已知的bug还是限制 可以做些什么来解决这个问题?我不知道这个限制,因为我更喜欢较小的演讲片段(如果暂停或活动暂停时很有用) 调用speak时,您可以使用以下for queueMode将新语句添加到队列末尾: TextToSpeech.QUEUE\u添加 测试以确保句子听起来没有什么不同,但我认为只要在截断长度后的下一个句子(

我刚刚在Android的TTS引擎中观察到一个“未记录的异常现象”:如果要说的文本太长(超过4K个字符),那么对于那个特定的话语,就永远不会出现

还有其他人见过这个吗

这是已知的bug还是限制


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

我不知道这个限制,因为我更喜欢较小的演讲片段(如果暂停或活动暂停时很有用)

调用speak时,您可以使用以下for queueMode将新语句添加到队列末尾: TextToSpeech.QUEUE\u添加


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

我不确定这对您的情况是否有帮助,但在类似的情况下,我使用了一个匿名广播接收器,带有一个用于TextToSpeech.ACTION\u TTS\u QUEUE\u PROCESSING\u的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);

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

我知道这篇文章有点过时,但你认为这是一个潜在的解决办法吗?它基本上是说使用tts.isSpeaking()作为一个解决方法。+1是唯一一个接受挑战的人。事实上,我现在唯一能想到的解决办法就是把长文本分成小块来“伪造”。如果谷歌记录了这一限制,那就太好了。谢谢,事实证明,这是唯一一种确定猜测TTS长度的方法。剩下的方法是将其保存到mp3。我们如何知道mp3或Wav是完全创建的。。?我需要帮助@djdance