微信小程序实现语音转文字接口,提供中文普通话转文字服务。

发布时间 2023-12-27 18:13:41作者: 網友攃

进行录音

  initRecorderManager(){
     // 微信自带语音初始化
     this.data.recorderManager = wx.getRecorderManager();
     // 监听录音开始事件
     this.data.recorderManager.onStart(() => {
       console.log('录音开始');
     });
     // 监听录音暂停事件
     this.data.recorderManager.onPause(() => {
       console.log('录音暂停');
     });
     // 监听录音继续事件
     this.data.recorderManager.onResume(() => {
       console.log('录音继续');
     });
     // 监听录音结束事件
    // 监听录音结束事件
    this.data.recorderManager.onStop((res:any) => {
   // 将res.tempFilePath传入speechToText 进行转换
      console.log('录音结束', res);
      this.setData({
        audioSrc: res.tempFilePath
      });   
      // 获取accessToken的接口
      fly.get('wechat/getAccessToken').then((res: { code: number; data: any; }) => {
        if (res.code == 200) {
            this.setData({
              accessToken: res.data
            });
            speechToText(this.data.accessToken,this.data.audioSrc).then((resf:any) => {

              console.log('resf',resf);
              
              // this.setData({
              //   res:
              //  })
            })
        }else{
          wx.showToast({
            title: '网络错误',
            icon: 'error',
            duration: 2000
          })
        }
    });


    });
     // 监听录音错误事件
     this.data.recorderManager.onError((res:any) => {
       console.error('录音错误', res.errMsg);
     });
  },

提交语音

  1. 先以提交音频的形式来上传到微信服务器进行处理
  2. 在通过接口获取转成文字的数据
    示例
// 封装语音转文本
// accessToken是根据appid,AppSecret获取到的token
// formatPath是录音地址
const speechToText = (accessToken:string,formatPath:string) => {
return new Promise<any>((resolve, reject) => {
  let voice_id = generateUUID()
 // 1.
  wx.uploadFile({
    url: `https://api.weixin.qq.com/cgi-bin/media/voice/addvoicetorecofortext?access_token=${accessToken}&format=mp3&voice_id=${voice_id}&lang=zh_CN`,
    filePath: formatPath,
    name: 'voice',
    success: function(res:any) {
     // 上传成功后的状态码 errcode:0 的时候表示成功了
      console.log('success',JSON.parse(res.data).errcode);
      if(JSON.parse(res.data).errcode == 0){
     // 2.成功后获取
      wx.request({
        method: 'POST',
        url: `https://api.weixin.qq.com/cgi-bin/media/voice/queryrecoresultfortext?access_token=${accessToken}&voice_id=${voice_id}&lang=zh_CN`,
        success: function(resf:any) {
          var text = resf.data.text;
          // 处理识别结果,识别成功后的文件返回
          resolve(text)
        },
        fail:(err)=> {
          console.log('speechToTextrequest',err);
         }
      });
      }
    },
    fail:(err)=> {
     console.log('speechToText',err);
 
    }
  });
})
}

// 生成一个随机的 uuID
function generateUUID() {
  var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
  var uuid = '';
  for (var i = 0; i < 32; i++) {
    var index = Math.floor(Math.random() * chars.length);
    uuid += chars.charAt(index);
  }
  return uuid;
}