美文网首页
微信小程序语音聊天智能对话(demo)

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

作者: 极乐叔 | 来源:发表于2018-09-06 14:27 被阅读67次

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

    效果图

    重要jS代码:

     //手指按下时 语音转文字
      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 技术的识别语音代码:

    // 发送语料到语义平台
      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;
     },
    
    

    源码:
    百度云:https://pan.baidu.com/s/1jHJj1HG

    专栏作家

    honey缘木鱼。小程序社区博主,坚持原创分享技术博文。

    本文原创发布于小程序社区。未经许可,禁止转载

    原文地址:微信小程序语音聊天智能对话(demo)-教程-小程序社区-微信小程序-微信小程序开发社区-小程序开发论坛-微信小程序联盟

    相关文章

      网友评论

          本文标题:微信小程序语音聊天智能对话(demo)

          本文链接:https://www.haomeiwen.com/subject/lrrxgftx.html