Vue项目接入百度语音播报

这里是获取百度语音token的方法 可以让公司后台处理一下百度平台提供的接口获取accessToken 
 async getToken () {
      const res = await this.axios.c_baiduApi();
      console.log(res);
      if (res.code !== 200) return this.$message.error(res.msg);
      let obj = JSON.parse(res.msg)
      this.accessToken = obj.access_token
   },
 // 语音播报
    btts (text) {  //以下参数参考api文档,token和人的声音音色之类的参数
      var param = {
        tex: text,
        tok: this.accessToken,//这个token要换成百度平台提供接口获取的token
        cuid: "",  //必填
        spd: 5,
        pit: 5,
        vol: 15,
        per: 4
      };
      var url = 'http://tsn.baidu.com/text2audio';
      var p = param || {};
      var that = this;
      var xhr = new XMLHttpRequest();
      xhr.open('POST', url);
      // 创建form参数
      var data = {};
      for (var p in param) {
        data[p] = param[p]
      }
      // 赋值预定义参数
      data.cuid = data.cuid || data.tok;
      data.ctp = 1;
      data.lan = data.lan || 'zh';
      //以上为封装请求的参数
      // 序列化参数列表
      var fd = [];
      for (var k in data) {
        fd.push(k + '=' + encodeURIComponent(data[k]));
      }

      var frd = new FileReader();
      xhr.responseType = 'blob';
      xhr.send(fd.join('&'));

      //请求返回结果处理
      xhr.onreadystatechange = function () {
        if (xhr.readyState == 4) {
          if (xhr.status == 200) {
            if (xhr.response.type == 'audio/mp3') {
              //创建audio对象进行播报
              var audio = new Audio();
              audio.setAttribute('src', URL.createObjectURL(xhr.response));
              audio.play();
              audio = null;
            } else {
              //这里如果百度语音合成的接口返回类型不是audio/mp3,是json的话,代表你的参数有问题,返回结果失败,具体可以查看api文档
              alert("调用语音合成接口token已失效!");
            }
          } else {
            alert("语音合成接口调用失败!");
          }
        }
      }
    },
发布了10 篇原创文章 · 获赞 1 · 访问量 296

猜你喜欢

转载自blog.csdn.net/weixin_45308258/article/details/104063423