aar调用网站语音合成
By
admin
at 2018-02-25 • 0人收藏 • 1613人看过
在aar的官方论坛看到有人问怎么调用网站那个语音合成?
网站是 peiyinge.com/make/
于是去搜索了调用的js代码,看到了如下的js代码:
位于peiyinge.com/bin/js/flashPlay.js
var objItem = makeArray[playnum]; $.ajax({ type : "post", url : base_url+"/make/getSynthSign", data :{"content": ClearBr1(objItem.text)}, dataType : "json", success : function(result) { var resultInfo = eval(result); if(hasaudio) {//支持audio标签 synthServer = objItem.engineUrl; // synthServer = 'http://172.31.4.35:17063/synth'; // synthServer = 'http://proxy.peiyinge.com:17063/synth'; var txtcnt = ClearBr(objItem.text); if(isIE()){ txtcnt = encodeURI(ClearBr1(objItem.text).replace( /\[0.5秒]/g, "[p500]").replace( /\[1秒]/g, "[p1000]").replace( /\[2秒]/g, "[p2000]")).replace(/\#/g, "%23").replace(/\+/g, "%2B").replace(/\&/g, "%26"); } var defaultVolume = ''; for(var i = 0;i < speakernos.length;i++){ if(objItem.vid == speakernos[ i ].speakerNo){ defaultVolume = speakernos[ i ].defaultVolume } } var anchorsize = 0; if(parseInt($('.anchorsize').val()) < 50){ anchorsize = 0 - Math.round((20 - parseInt($('.anchorsize').val())*(20/50))); }if(parseInt($('.anchorsize').val()) == 50){ anchorsize = 0; }if(parseInt($('.anchorsize').val()) == 0){ anchorsize = -20; }if(parseInt($('.anchorsize').val()) > 50){ anchorsize = Math.floor(parseInt($('.anchorsize').val())*(20/50)-20); }if(parseInt($('.anchorsize').val()) == 100){ anchorsize = 20 }; if(type == '1'){ mainaudio1 = document.createElement('audio'); mainaudio1.setAttribute('src',synthServer+ '?ts='+resultInfo.ts+'&sign='+resultInfo.sign+'&vid='+objItem.vid+'&volume='+anchorsize+'&speed='+objItem.speed+'&content='+txtcnt); mainaudio1.volume = .5; for(var i = 0;i < speakernos.length;i++){ if(objItem.vid == speakernos[ i ].speakerNo){ mainaudio1.setAttribute('speekwork',speakernos[ i ].watermark) } } if(iffirst == true){ if($('.jp-play').hasClass('cur')){ mainplayworks(playnum,'1'); } }else { mainaudio1.load(); } }if(type == '2'){ mainaudio2 = document.createElement('audio'); mainaudio2.setAttribute('src',synthServer+ '?ts='+resultInfo.ts+'&sign='+resultInfo.sign+'&vid='+objItem.vid+'&volume='+anchorsize+'&speed='+objItem.speed+'&content='+txtcnt); mainaudio2.volume = .5; for(var i = 0;i < speakernos.length;i++){ if(objItem.vid == speakernos[ i ].speakerNo){ mainaudio2.setAttribute('speekwork',speakernos[ i ].watermark) } } if(iffirst == true){ if($('.jp-play').hasClass('cur')){ mainplayworks(playnum,'2'); } }else { mainaudio2.load(); } } }else { if(indexNo== 0) { setHighlight(indexNo,objItem,makeArray.length); } thisName("Player").play(type,arrayLength,indexNo,objItem.engineUrl,objItem.text,objItem.vid,objItem.volume,objItem.speed,objItem.pitch,resultInfo.ts,resultInfo.sign); } } }); }
那么应该如何写成aar的形式呢?
下面简单的用控制台实现了基本功能, 弹出浏览器打开网址任何会提示一个下载,我们下载之,然后用播放器打开这个文件即可听到朗读的声音.
import console; import inet.url; import inet.http; import process.openUrl; import web.rest.jsonLiteClient; var http = ..web.rest.jsonLiteClient(); var ret = http.post( "http://www.peiyinge.com/make/getSynthSign", { content = "你好,我就是测试一下!"; }) console.dump(ret) var text=inet.url.encode(ret.synthText) str = "http://proxy.peiyinge.com:17063/synth?ts="++ret.ts++"&sign="++ret.sign++"&vid=65090&volume=0&speed=0&content="++text; console.log(str) var whttp=inet.http() var html =whttp.get(str) ; string.save("C:\888.mp3",html,true) //process.openUrl(str); console.pause(true);
当然,你也可以获取到朗读文件保存为mp3格式,嗯,做个界面也不错.
2 个回复 | 最后更新于 2018-07-31
登录后方可回帖
做了个界面:
发现貌似文本过长的话,有时候就会转换失败导致播放不了....
解决办法: 可以利用标点符号进行分隔, 然后将分隔的字串按照顺序一个个转换,这个播放的时候转换下一个,..依次进行知道结束...