vue 实现百度语音合成(语音播报)

Posted xjx199403

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue 实现百度语音合成(语音播报)相关的知识,希望对你有一定的参考价值。

这里我完全依照百度提供的语音合成api来做:https://ai.baidu.com/docs#/TTS-Online-Node-SDK/top 直接去看node.js SDK。

1.换取access_token:

参考:https://ai.baidu.com/docs#/TTS-API/top,在这里用浏览器换取token

2.下载sdk依赖:

npm install baidu-aip-sdk

 

完整代码(非原创,参考了一个demo,但是很久以前写的找不到了):

btts(text) {
      console.log(text);
   //以下参数参考api文档,token和人的声音音色之类的参数
var param={ tex: text, tok: ‘24.e835483633e8680242bb042693e1c071.********.1573463462.******-16425747‘,//这个token要换成自己的 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("语音合成接口调用失败!"); } } } }

 

以上是关于vue 实现百度语音合成(语音播报)的主要内容,如果未能解决你的问题,请参考以下文章

python腾讯语音合成

Android studio 百度地图开发(10)语音播报的问题:能正常导航,但是无法语音播报

百度地图导航没有语音问题

vue实现语音播报功能

iOS自带TTS技术的实现即语音播报

jQuery.speech实现文本转语音播报功能