这里介绍两种方式: 第一种:
var text = encodeURI("时间滴答滴答就消逝了!")
var token = this.redis.get('token')//百度平台提供接口获取的token 获取的token可以放到redis或者其他缓存中,支持30天有效
var http='http://tsn.baidu.com/text2audio?lan=zh&ctp=1&cuid=abcdxxx&tok='+token+'&tex='+text+'&vol=9&per=0&spd=5&pit=5&aue=3'
new Audio(http).play();
第二种:
ps:第二种参考网上大神的记录
//token获取地址:https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=&client_secret=
var param = {
tex: text,//合成的文本 支持1次及2次urlencode
tok: this.redis.get('token'),//百度平台提供接口获取的token 获取的token可以放到redis或者其他缓存中,支持30天有效
cuid: this.redis.get('token'), //必填
spd: 5,//语速1-15
pit: 5,//音调0-15
vol: 15,//音量0-15,
per: 4,//基础音库or精品音库
};
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("语音合成接口调用失败!");
}
}
}