JavaScript

超轻量级php框架startmvc

vue实现百度语音合成的实例讲解

更新时间:2020-09-17 17:48:01 作者:startmvc
这里我完全依照百度提供的语音合成api来做:https://ai.baidu.com/docs#/TTS-Online-Node-SDK/top直接去

这里我完全依照百度提供的语音合成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 语音合成