小程序语音识别接口

.wxml代码

<view class="voice-button" bindtouchstart="recordStart" bindtouchend="recordEnd">
          <image class="pic-img"  src="/resource/image/voice.png"></image>
          <view class="pic-text">长按说话</view>
</view>

 

.wxss代码

.voice-button{
float: right;
text-align: center;
}
.pic-img{
width: 132rpx;
height: 132rpx;
}
.pic-text{
font-size: 26rpx;
}

.js代码

.js页面
  /* 语音功能 */
  //这个是监听语音识别的方法,只要写了bindtouchstart和bindtouchend对应的方法就可自动触发,需注意的是,最好写var that = this;因为会发生指向问题,从而触发不到这个方法。
  initRecord: function(){
    let that = this;
    //有新的识别内容返回,则会调用此事件
    // manager.onRecognize = (res) => {
    //   var recText = this.sendRecord(res.tempFilePath);
    //   console.log('语音识别中');
    //   console.log(result);
    //   this.setData({
    //     inputVal: recText
    //   });
    // }

    // 识别结束事件
    manager.onStop ((res) => {
      console.log('监听识别结束');
      console.log(res.tempFilePath)
      that.sendRecord(res.tempFilePath);//识别结束执行上传语音事件
    })

    // 识别错误事件
    manager.onError ((res) => {

      that.setData({
       //这里的参数根据项目要求自行设置
      })

    })
  },
  //识别开始
  recordStart: function(){
    let that = this;
    manager.start({
      duration: 30000,//指定录音的时长,单位 ms
      sampleRate: 16000,//采样率
      numberOfChannels: 1,//录音通道数
      encodeBitRate: 96000,//编码码率
      format: 'mp3',//音频格式,有效值 aac/mp3
      frameSize: 50,//指定帧大小,单位 KB
    })
    that.setData({
        //这里的参数根据项目要求自行设置
    });
    console.log('识别开始')
  },
  //识别结束
  recordEnd: function(){
    manager.stop();
    console.log('识别结束')
  },
  //上传语音方法
  sendRecord: function (src) {
    let that = this;
    app.uploadFile({
      url: url,//这里写语音识别的接口
      method: 'POST',
      filePath: src,
      name: 'file',
      formData: {
        file:src
      },
      header:{
        'Content-Type': 'application/x-www-form-urlencoded'
      },
      success: function (result) {
        console.log('识别结果')
        console.log(result)
        //必须解析
        var res = JSON.parse(result.data);
        console.log(res)
        if(res.success){
          var data = res.item;
          let recText ;
          if(data.length>0){
            recText = data.replace(/。/ig, '');
            that.setData({
               //这里的参数根据项目要求自行设置
            })
          }else{
            that.setData({
               //这里的参数根据项目要求自行设置
            });
            app.msg('无识别结果')
            return false;
          }
        }else{
          that.setData({
            listening: false
          });
          app.msg(res.message)
          return false;
        }
      },
      fail: function (err) {
        app.msg(res.message)
        return false;
      }
    });
  },

 

posted on 2019-05-20 14:29  一只傻阿贝哟  阅读(348)  评论(0编辑  收藏  举报

导航