微信小程序录音功能实现、录音转文字(接口与插件的实现)

记录开发过程中的东西:
录音之前有wx.startRecord来调用录音,不过目前微信小程序已经停止对该接口的维护,目前可采用wx.getRecorderManager创建录音管理来进行录音

录音转文字调用后端写的接口,我这里是PCM录音格式,具体要求可根据后端需要进行传递,设置录音格式字段已标明 实现步骤:
第一步:在要录音的page.js中全局创建录音管理

const manager1 = wx.getRecorderManager() //创建录音管理

第二步:在该js文件中可以写一个方法用来开启录音:

 //使用录音接口
  manager_start: function () {
    
    
    let that = this
    const options = {
    
    
      duration: 5000, //指定录音的时长,单位 ms
      sampleRate: 16000, //采样率
      numberOfChannels: 1, //录音通道数
      encodeBitRate: 96000, //编码码率
      format: 'PCM', //音频格式,有效值 aac/mp3
      frameSize: 50, //指定帧大小,单位 KB
      audioSource: 'auto', //自动设置,默认使用手机麦克风,插上耳麦后自动切换使用耳机麦克风,所有平台适用
    }
    //开始录音
    manager1.start(options);
    manager1.onStart(() => {
    
    
      console.log('recorder start')
    });
    manager1.onStop((res) => {
    
    
      console.log('录音结束', res)
      if (res.tempFilePath) {
    
    
         console.log('录音后的地址',res)
         that.contentText(res.tempFilePath)//将录音转文字(调用接口)
      }
    })
    manager1.onRecognize = function (res) {
    
    
      console.log(res)
    }
    //错误回调
    manager1.onError((res) => {
    
    
      console.log(res);
    })
  },
 //调用接口语音转文字
  contentText: function (url) {
    
    
    // console.log(url)
    let that = this
    wx.uploadFile({
    
    
      url: '接口地址',
      filePath: url,//录音地址
      name: 'file',//后端拿录音的key值,需要与后端确认
      header: {
    
    //请求头
        'content-type': 'multipart/form-data',
      },
      formData: {
    
    },
      success: function (res) {
    
    
        console.log("success-res", res)
        that.condition(JSON.parse(res.data))
      },
      fail: function (res) {
    
    
        console.log("fail-res", res)
        return
      }
    });
  },

将录音转文字的第二种方法(使用微信小程序插件:同声传译插件进行解析):
实现步骤:

前面一片文章已经说过该插件的引入方式
首先在page.js中引入插件

const plugin = requirePlugin('WechatSI');
//获取全局唯一的语音识别管理器recordRecoManager
const manager = plugin.getRecordRecognitionManager();

在该js页面中写入方法:

//触发录音的事件
  touchStart: function (e) {
    
    
    // var flag = Number(e.currentTarget.dataset.flag);
    // this.setData({
    
    
    //   flag: flag
    // })
    // 语音开始识别
    manager.start({
    
    
      lang: 'zh_CN', // 识别的语言,目前支持zh_CN en_US zh_HK sichuanhua
    })
  },


//识别语音 -- 初始化
  initRecord: function () {
    
    
    const that = this;
    // 有新的识别内容返回,则会调用此事件
    manager.onRecognize = function (res) {
    
    
      console.log(res)
      if (res) {
    
    
        manager.stop();
      }
    }
    // 正常开始录音识别时会调用此事件
    manager.onStart = function (res) {
    
    
      console.log("成功开始录音识别", res)
    }
    // 识别错误事件
    manager.onError = function (res) {
    
    
      console.error("error msg", res)
    }
    //识别结束事件
    manager.onStop = function (res) {
    
    
      console.log('..............结束录音', res)
      console.log('录音临时文件地址 -->' + res.tempFilePath);
      console.log('录音总时长 -->' + res.duration + 'ms');
      console.log('文件大小 --> ' + res.fileSize + 'B');
      console.log('转语音为中文的内容 --> ' + res.result);
    }
  },

猜你喜欢

转载自blog.csdn.net/weixin_50147372/article/details/112820655
今日推荐