uni 讯飞文字转语音 详解

it2023-01-11  79

嗯, 使用讯飞的这个转语音是有bug的。

安卓8以上会出现合成错误的情况。所以我在网上找了一些简单的解决方法

话不多说上代码

test() { var main = plus.android.runtimeMainActivity() var SpeechUtility = plus.android.importClass('com.iflytek.cloud.SpeechUtility') SpeechUtility.createUtility(main, "appid=这里放你自己的appid,") var SynthesizerPlayer = plus.android.importClass('com.iflytek.cloud.SpeechSynthesizer') var play = SynthesizerPlayer.createSynthesizer(main, null) // 监听接收透传消息事件 // plus.push.addEventListener('receive', function(msg) { // 处理透传消息的业务逻辑代码 let msg = { content: '星夫柒到账12元'//这里放处理的文字。根据实际需求改变 } uni.getSystemInfo({ success: function(res) { console.log(res.system); if (parseInt(res.system) >= 8) { //判断安卓版本 let ttt = this.changeEnCode(msg.content)//处理文本 play.startSpeaking(ttt, null) // 播放播报 } else { play.startSpeaking(msg.content, null) // 播放播报 console.log("receive: ", msg) } } }); // }, false); },

处理那个文本的方法

//网上找的 changeEnCode(str) { let res = [] for (let i = 0; i < str.length; i++) { // 这个不是正常的encodeUnicode 颠倒了大小端的位置 res[i] = ("00" + str.charCodeAt(i).toString(16)).slice(-2) + ("00" + str.charCodeAt(i).toString(16)).slice(-4, -2) } let strCode = "\\u" + res.join("\\u") strCode = strCode.replace(/\\/g, "%") return unescape(strCode) },

如果需要监听订单实时提醒,最好放到app.vue的onLaunch里

最新回复(0)