我在用TextToSpeech
有时会播放一些长文本,我注意到从那以后Android 4.1.2
如果文本长度超过 4000 个字符,则不会播放。
我没有收到任何错误,但文本不会播放。直到现在我才能够重现这个Android 4.1.2
(三星 Galaxy Nexus、Nexus7)。
这是一个错误吗?4.1.2
或者这是正常的(尽管我没有找到有关此行为的任何文档)?
我还发现了一个帖子:如果收到的 TTS 太长,onUtteranceCompleted() 会丢失 https://stackoverflow.com/questions/6863107/onutterancecompleted-lost-if-tts-received-is-too-long这表明超过 4000 个字符的文本存在不同的问题。
EDIT:我尝试将字符串分割成 4k 长度的块,然后将其发送到TTS
using QUEUE_ADD
我遇到了另一个bug https://stackoverflow.com/questions/13482899/android-jelly-bean-tts-queue-add-does-not-work: QUEUE_ADD
不起作用,而是刷新现有队列,并且只播放最后一个块。
EDIT2: 这是我的电话TTS
mTTS.speak(longText, TextToSpeech.QUEUE_FLUSH, null);
TtsService.java 中的 MAX_SPEECH_ITEM_CHAR_LENGTH = 4000,在 4.1 上我在代码中看到警告:
@Override
public boolean isValid() {
if (mText == null) {
Log.wtf(TAG, "Got null text");
return false;
}
if (mText.length() >= MAX_SPEECH_ITEM_CHAR_LENGTH) {
Log.w(TAG, "Text too long: " + mText.length() + " chars");
return false;
}
return true;
}
看起来 2.3 会分割文本,所以理论上你的代码应该在 android
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)