項(xiàng)目中用到了 olami sdk把錄音或者文字轉(zhuǎn)化為用戶可以理解的json字符串。
效果圖
重要jS代碼:
//手指按下時(shí) 語(yǔ)音轉(zhuǎn)文字 voiceToChar:function(){ var urls = app.globalData.slikToCharUrl; var voiceFilePath = that.data.filePath; if(voiceFilePath == null){ console.log("[Console log]:File path do not exist!"); wx.showModal({ title: '錄音文件不存在', content: '我也不知道哪錯(cuò)了,反正你就再試一次吧!', showCancel: false, confirmText: '確定', confirmColor: '#09BB07', }) return; } var appkey = app.globalData.NLPAppkey; var appsecret = app.globalData.NLPAppSecret; var NLPCusid = app.globalData.NLPCusid; wx.showLoading({ title: '語(yǔ)音識(shí)別中...', }) wx.uploadFile({ url: urls, filePath: voiceFilePath, name: 'file', formData: { "appKey": appkey, "appSecret": appsecret, "userId": NLPCusid }, header: { 'content-type': 'multipart/form-data' }, success: function (res) { wx.hideLoading(); var data = JSON.parse(res.data); var seg = JSON.parse(data.result).seg; console.log("[Console log]:Voice to char:" + seg); if(seg == null || seg.length == 0){ wx.showModal({ title: '錄音識(shí)別失敗', content: "我什么都沒(méi)聽(tīng)到,你再說(shuō)一遍!", showCancel: false, success: function (res) { } }); return; } that.addChat(seg, 'r'); console.log("[Console log]:Add user voice input to chat list"); that.sendRequest(seg); return; }, fail: function (res) { console.log("[Console log]:Voice upload failed:" + res.errMsg); wx.hideLoading(); wx.showModal({ title: '錄音識(shí)別失敗', content: "請(qǐng)你離WIFI近一點(diǎn)再試一次!", showCancel: false, success: function (res) { } }); } }); }, |
olami 技術(shù)的識(shí)別語(yǔ)音代碼:
// 發(fā)送語(yǔ)料到語(yǔ)義平臺(tái) sendChat: function (e) { let word = e.detail.value.ask_word ? e.detail.value.ask_word : e.detail.value; console.log("[Console log]:User input:" + word); that.addChat(word, 'r'); console.log("[Console log]:Add user input to chat list"); that.setData({ askWord: '', sendButtDisable: true, }); that.sendRequest(word); }, // 發(fā)送請(qǐng)求到語(yǔ)義平臺(tái) sendRequest(corpus){ app.NLIRequest(corpus, { 'success': function (res) { if (res.status == "error") { wx.showToast({ title: '返回?cái)?shù)據(jù)有誤!', }) return; } var resjson = JSON.parse(res); var data = JSON.stringify(resjson.data); that.NLIProcess(data); }, 'fail': function (res) { wx.showToast({ title: '請(qǐng)求失?。?#39;, }) return; } }); }, // 處理語(yǔ)義 NLIProcess: function(res){ var nlires = JSON.parse(res); var nliArray = nlires.nli; if(nliArray == null || nliArray.length == 0){ wx.showToast({ title: '返回?cái)?shù)據(jù)有誤!', }) return; } var answer = nliArray[0].desc_obj.result; if(answer == null){ wx.showToast({ title: '返回?cái)?shù)據(jù)有誤!', }) return; } console.log("[Console log]:Add answer to chat list..."); that.addChat(answer, 'l'); var dataArray = nliArray[0].data_obj; if(dataArray != null && dataArray.length > 0){ var objType = nliArray[0].type; if(objType == 'selection' && dataArray.length > 1){ that.newsProcess(dataArray); return; } if (objType == 'news' && dataArray.length == 1) { console.log("[Console log]:Add news to chat list..."); var title = dataArray[0].title; var detail = dataArray[0].detail; var news = title + "\n" + detail; that.addChat(news, 'l'); return; } var content = dataArray[0].content; if (content != null && content != answer){ console.log("[Console log]:Add content to chat list..."); that.addChat(content, 'l'); } } return; }, |
工作日 8:30-12:00 14:30-18:00
周六及部分節(jié)假日提供值班服務(wù)