欢迎光临,了解微信小程序开发,就上易用通!

微信小程序语音聊天智能对话(demo)

发布:2018-09-07 08:48浏览: 来源:网络 作者:cola

项目中用到了 olami sdk把录音或者文字转化为用户可以理解的json字符串。

效果图

微信小程序语音聊天智能对话(demo)(图1)

重要jS代码:

 

  1. //手指按下时 语音转文字
    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: '我也不知道哪错了,反正你就再试一次吧!',
    showCancel: false,
    confirmText: '确定',
    confirmColor: '#09BB07',
    })
    return;
    }
    var appkey = app.globalData.NLPAppkey;
    var appsecret = app.globalData.NLPAppSecret;
    var NLPCusid = app.globalData.NLPCusid;
    wx.showLoading({
    title: '语音识别中...',
    })
    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: '录音识别失败',
    content: "我什么都没听到,你再说一遍!",
    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: '录音识别失败',
    content: "请你离WIFI近一点再试一次!",
    showCancel: false,
    success: function (res) {
    }
    });
    }
    });
    },

olami 技术的识别语音代码:

 

  1. // 发送语料到语义平台
    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);
    },
    // 发送请求到语义平台
    sendRequest(corpus){
    app.NLIRequest(corpus, {
    'success': function (res) {
    if (res.status == "error") {
    wx.showToast({
    title: '返回数据有误!',
    })
    return;
    }
    var resjson = JSON.parse(res);
    var data = JSON.stringify(resjson.data);
    that.NLIProcess(data);
    },
    'fail': function (res) {
    wx.showToast({
    title: '请求失败!',
    })
    return;
    }
    });
    },
    // 处理语义
    NLIProcess: function(res){
    var nlires = JSON.parse(res);
    var nliArray = nlires.nli;
    if(nliArray == null || nliArray.length == 0){
    wx.showToast({
    title: '返回数据有误!',
    })
    return;
    }
    var answer = nliArray[0].desc_obj.result;
    if(answer == null){
    wx.showToast({
    title: '返回数据有误!',
    })
    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;
    },
    




免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。