在合成的时候,会先尝试在线合成。如何默认使用离线合成。
看到你们的文档中有这个参数:PARAM_MIX_MODE
MIX_MODE_DEFAULT(mix模式下,wifi使用在线合成,非wifi使用离线合成)
MIX_MODE_HIGH_SPEED_NETWORK(mix模式下,wifi,4G,3G使用在线合成,其他使用离线合成)
MIX_MODE_HIGH_SPEED_SYNTHESIZE(mix模式下,在线返回速度如果慢(超时,一般为1.2秒)直接切换离线,适用于网络环境较差的情况)
MIX_MODE_HIGH_SPEED_SYNTHESIZE_WIFI(mix模式下,仅wifi使用在线合成,返回速度如果慢(超时,一般为1.2秒)直接切换离线,适用于仅WIFI网络环境较差的情况)
但是没有直接使用离线合成的参数设置
当网络状态不佳的时候,会有一连串的-107
如果一串文本分为5段播放,则会出现前几段没有播放直接播放某一段。
这样的话,batchSpeak就不能顺序合成的。
发一下合成时候的代码:
List bags = new ArrayList();
for (int i = 0; i < readArray.length; i++) {
bags.add(GetSpeechSynthesizeBag(readArray[i], i));
Log.d(TAG, "开始准备TTS 第" + i + "段 长度: " + readArray[i].length() + " 内容: " + readArray[i]);
}
如果在error的时候,我再送到tts里面的话,顺序就乱套了。
下面是出错日志:
07-04 15:58:17.343 25361-25361/com.tourkaa.guide D/ScenicGuideActivity: 开始准备TTS 第0段 长度: 6 内容: 测试数据开始
07-04 15:58:17.343 25361-25361/com.tourkaa.guide D/ScenicGuideActivity: 开始准备TTS 第1段 长度: 10 内容: 一一一一一一一一一一
07-04 15:58:17.343 25361-25361/com.tourkaa.guide D/ScenicGuideActivity: 开始准备TTS 第2段 长度: 10 内容: 二二二二二二二二二二
07-04 15:58:17.343 25361-25361/com.tourkaa.guide D/ScenicGuideActivity: 开始准备TTS 第3段 长度: 11 内容: 三三三三三三三三三三三
07-04 15:58:17.343 25361-25361/com.tourkaa.guide D/ScenicGuideActivity: 开始准备TTS 第4段 长度: 10 内容: 四四四四四四四四四四
07-04 15:58:17.343 25361-25361/com.tourkaa.guide D/ScenicGuideActivity: 开始准备TTS 第5段 长度: 10 内容: 五五五五五五五五五五
07-04 15:58:17.343 25361-25361/com.tourkaa.guide D/ScenicGuideActivity: 开始准备TTS 第6段 长度: 10 内容: 六六六六六六六六六六
07-04 15:58:17.343 25361-25361/com.tourkaa.guide D/ScenicGuideActivity: 开始准备TTS 第7段 长度: 10 内容: 七七七七七七七七七七
07-04 15:58:17.353 25361-25361/com.tourkaa.guide D/ScenicGuideActivity: 开始准备TTS 第8段 长度: 10 内容: 八八八八八八八八八八
07-04 15:58:17.353 25361-25361/com.tourkaa.guide D/ScenicGuideActivity: 开始准备TTS 第9段 长度: 11 内容: 九九九九九九九九九九九
07-04 15:58:17.353 25361-25361/com.tourkaa.guide D/ScenicGuideActivity: 开始准备TTS 第10段 长度: 10 内容: 十十十十十十十十十十
07-04 15:58:17.353 25361-25361/com.tourkaa.guide D/ScenicGuideActivity: 开始准备TTS 第11段 长度: 6 内容: 测试数据结束
07-04 15:58:17.363 25361-25361/com.tourkaa.guide D/ScenicGuideActivity: TTS准备完毕。。开始播放
07-04 15:58:23.389 25361-27409/com.tourkaa.guide D/ScenicGuideActivity: onError error=(-107)(-107)TimeoutException[(cause)java.util.concurrent.TimeoutException]--utteranceId=0
07-04 15:58:23.549 25361-27558/com.tourkaa.guide D/ScenicGuideActivity: onSynthesizeStart utteranceId=1
07-04 15:58:30.766 25361-27558/com.tourkaa.guide D/ScenicGuideActivity: onError error=(-107)(-107)TimeoutException[(cause)java.util.concurrent.TimeoutException]--utteranceId=1
07-04 15:58:30.766 25361-27558/com.tourkaa.guide D/ScenicGuideActivity: onSynthesizeStart utteranceId=2
07-04 15:58:37.983 25361-27558/com.tourkaa.guide D/ScenicGuideActivity: onError error=(-107)(-107)TimeoutException[(cause)java.util.concurrent.TimeoutException]--utteranceId=2
07-04 15:58:37.983 25361-27558/com.tourkaa.guide D/ScenicGuideActivity: onSynthesizeStart utteranceId=3
07-04 15:58:45.250 25361-27558/com.tourkaa.guide D/ScenicGuideActivity: onError error=(-107)(-107)TimeoutException[(cause)java.util.concurrent.TimeoutException]--utteranceId=3
07-04 15:58:45.250 25361-27558/com.tourkaa.guide D/ScenicGuideActivity: onSynthesizeStart utteranceId=4
07-04 15:58:52.518 25361-27558/com.tourkaa.guide D/ScenicGuideActivity: onError error=(-107)(-107)TimeoutException[(cause)java.util.concurrent.TimeoutException]--utteranceId=4
07-04 15:58:52.518 25361-27558/com.tourkaa.guide D/ScenicGuideActivity: onSynthesizeStart utteranceId=5
07-04 15:58:59.725 25361-27558/com.tourkaa.guide D/ScenicGuideActivity: onError error=(-107)(-107)TimeoutException[(cause)java.util.concurrent.TimeoutException]--utteranceId=5
07-04 15:58:59.725 25361-27558/com.tourkaa.guide D/ScenicGuideActivity: onSynthesizeStart utteranceId=6
07-04 15:59:06.972 25361-27558/com.tourkaa.guide D/ScenicGuideActivity: onError error=(-107)(-107)TimeoutException[(cause)java.util.concurrent.TimeoutException]--utteranceId=6
07-04 15:59:07.032 25361-27558/com.tourkaa.guide D/ScenicGuideActivity: onSynthesizeStart utteranceId=7
07-04 15:59:14.309 25361-27558/com.tourkaa.guide D/ScenicGuideActivity: onError error=(-107)(-107)TimeoutException[(cause)java.util.concurrent.TimeoutException]--utteranceId=7
07-04 15:59:14.329 25361-27558/com.tourkaa.guide D/ScenicGuideActivity: onSynthesizeStart utteranceId=8
07-04 15:59:21.566 25361-27558/com.tourkaa.guide D/ScenicGuideActivity: onError error=(-107)(-107)TimeoutException[(cause)java.util.concurrent.TimeoutException]--utteranceId=8
07-04 15:59:21.566 25361-27558/com.tourkaa.guide D/ScenicGuideActivity: onSynthesizeStart utteranceId=9
07-04 15:59:28.773 25361-27558/com.tourkaa.guide D/ScenicGuideActivity: onError error=(-107)(-107)TimeoutException[(cause)java.util.concurrent.TimeoutException]--utteranceId=9
07-04 15:59:28.773 25361-27558/com.tourkaa.guide D/ScenicGuideActivity: onSynthesizeStart utteranceId=10
07-04 15:59:29.954 25361-27558/com.tourkaa.guide D/ScenicGuideActivity: onSynthesizeDataArrived progress=10
07-04 15:59:29.954 25361-27558/com.tourkaa.guide D/ScenicGuideActivity: onSynthesizeDataArrived file:/data/data/com.tourkaa.guide/files/ttsfiles/3_10.wav保存成功
07-04 15:59:29.974 25361-27558/com.tourkaa.guide D/ScenicGuideActivity: onSynthesizeFinish utteranceId=10
07-04 15:59:29.974 25361-27558/com.tourkaa.guide D/ScenicGuideActivity: onSynthesizeStart utteranceId=11
07-04 15:59:29.974 25361-28877/com.tourkaa.guide D/ScenicGuideActivity: onSpeechStart utteranceId=10
07-04 15:59:30.565 25361-27558/com.tourkaa.guide D/ScenicGuideActivity: onSynthesizeDataArrived progress=6
07-04 15:59:30.565 25361-27558/com.tourkaa.guide D/ScenicGuideActivity: onSynthesizeDataArrived file:/data/data/com.tourkaa.guide/files/ttsfiles/3_11.wav保存成功
07-04 15:59:30.565 25361-27558/com.tourkaa.guide D/ScenicGuideActivity: onSynthesizeFinish utteranceId=11
07-04 15:59:32.186 25361-28877/com.tourkaa.guide D/ScenicGuideActivity: onSpeechFinish utteranceId=10
07-04 15:59:32.206 25361-28877/com.tourkaa.guide D/ScenicGuideActivity: onSpeechStart utteranceId=11
07-04 15:59:33.978 25361-28877/com.tourkaa.guide D/ScenicGuideActivity: onSpeechFinish utteranceId=11
离线License至少需要能正常下载一份才能使用,因为你得离线license在网络很差时一直没有下载下来,所以离线是不可用的。在线请求因为默认是有6秒超时的(高速策略是1.2秒),所以有些能成功有些会失败。所以这个需要根据你们自己的需求来确定怎么实现。
你initTTS时候用的是online模式还是mix模式?如果是Mix模式,在线请求失败是会自动切换离线的,不应该会有这个错误报出的。