问题:看了下demo源代码,发现文字合成语音时文本不能超过超过1024个GBK字节(500汉字),在源码中修改了下代码,发现当文本超过500汉字,把文本截成几段调用批量合成播放,播放过程刚开始是女音播放,播放一段时加后变成男音,男音播放一小段时间后又变成女音播放。并且Edittext那个文字选中会在播放一段文字后,又重新跳到开始位置。
private void speak() {
mShowText.setText("");
String text = mInput.getText().toString();
// 需要合成的文本text的长度不能超过1024个GBK字节。
if (TextUtils.isEmpty(mInput.getText())) {
text = "百度语音,面向广大开发者永久免费开放语音合成技术。斑驳的旧时光里,总有一些" +
"或深或浅温暖人心的馨香,让人舍不得遗忘。潮湿的过往,不经意间邂逅了谁的眼眸" +
";文字里泛舟,又与谁的倩影不期而遇?淡淡的墨香中,谁在翩然靠近,袅袅娜娜," +
"直抵心间?一切,都那么美,那么惆怅,这不仅仅是文字的描摹,其外还有收藏着的心思" +
"与情感。的确,光阴里曾经明媚或暗淡的过往,总是伴着美丽的忧伤与成长的阵痛;" +
"日渐淡薄的往昔,也总能或多或少的在心里留下一丝清雅的执念。收藏,是因为" +
"骨子里是个守旧的人;收藏,更是因为心里有值得铭记的感动。今生,心为笔," +
"写下满笺素心浅事,不求浮华,但求安然;今生,心作尘,用绵长的时光,写下" +
"一份浅淡,缓缓落墨,轻轻收笔。走过流年悲喜沉浮,历阅尘世沧海桑田,在" +
"繁盛与荒凉的交替中,在升华和坠落的更迭中,我们体会过人生中的喜悦和欢愉," +
"也浅尝到流年里的无奈和忧伤,终于懂得,一些经历带来的不仅仅是或深或浅的回忆" +
",也许还有一辈子都刻画在心头的轻痕。很多东西,虽然还是有些放不下," +
"但是我们学会了把它放在心的另一个位置,浅浅抚慰。握一份懂得与感知," +
"盈一怀暖意与淡泊,穿行于浮华俗世,以一袭最温婉的姿态,于淡淡的疼痛中," +
"温暖清寒岁月,轻数时光,向暖流年,许浅冬一季暗香。当流年的风,或喜或悲," +
"从指尖滑过,转角街头的灯火阑珊,已在光阴的扉页上泛黄,生命的旅程中," +
"没有什么不会在岁月中老去。携一缕暖意,让心没有疏离与荒凉,把那些千回百转的" +
"念,凝结成心香,尘封收藏。最好的放下,不是刻意的去忘记,而是让彼此安然。" +
"温一盏岁月的暗香,在平静中回味,那些浅浅淡淡的过往,便是岁月留给我们的风景" +
"。行一程山水,书一抹眷恋,任走过心间的那缕清韵,在记忆中飞扬。铺一张素笺," +
"将斑驳零散的欢愉,细细描绘,于心之一隅,妥帖安放。寻一处清幽,让那千回百转" +
"的念,开成一朵心花,在风中流转。";
mInput.setText(text);
}
// 合成前可以修改参数:
// Map params = getParams();
// synthesizer.setParams(params);
List> texts = new ArrayList>();
if(text.length()>500){
int count=text.length()/500+1;
for (int i = 0; i < count; i++) {
if(i==(count-1)){
texts.add(new Pair(text.substring(i*500,text.length()),(i+1)+""));
}else{
texts.add(new Pair(text.substring(i*500,(i+1)*500),(i+1)+""));
}
}
int result = synthesizer.batchSpeak(texts);
checkResult(result, "batchSpeak");
}else{
int result = synthesizer.speak(text);
checkResult(result, "speak");
}
}
收藏
点赞
0
个赞
请登录后评论
TOP
切换版块
先找一个稳定的网络排除一下。有可能是网络好时用在线,为女声,网络不好是切换到离线模式为其他声音。
我也不确定啊 就是不定时的会出现自动切换问题
是否也是网络问题?
您好,请问解决了吗?我也遇到了男女生音色自动切换的问题
男女声切换可能是网络不好,离线和在线模式来回切换