百度智能云:运用百度智能云AI技术,助推贵阳企业上云、生产上云、管理上云,打造制造业智能化转型服务生态圈,为贵阳市数字经济和工业互联网高质量发展贡献力量。
1.去百度智能云申请百度语音合成服务
1.1创建应用
长文本和短文本的语音合成区别在于,长文本可以合成60秒以上的语音,而短文本只能合成60秒以下的语音,具体要选择哪种服务,要根据自己的需要或者项目需要。
1.2 领取短文本语音合成的资源
2.查看官方文档,学习语音合成
我们点击demo,查看官方写的demo
2.1 进入gitHub 学习官方提供的demo
2.2 查看文件TtsMain.java
看完代码后,我们获取了语音合成的url:http://tsn.baidu.com/text2audio 这个我们后面有用
我们发现关键的token,我们拿取不到,我们需要查看TokenHolder.java来知道,token如何获取
token的获取需要我们调用另一个接口,http://aip.baidubce.com/oauth/2.0/token
它需要三个参数:grant_type:client_credentials (官方提供的参数)
client_id: apiKey (应用的apiKey)
client_secret: secretKey (应用的secretKey)
我们学习完官方文档后,我们知道了语音合成所需要的接口,和参数,我接下来需要拿取我们在百度智慧云应用上的apiKey和 secretKey
2.3 获取ApiKey 和 Secret Key
3.为微信小程序添加服务器域名
由于ruiyi_App是个小程序,我们需要前往微信工作平台,添加服务器域名
添加http://aip.baidubce.com/oauth/2.0/token http://aip.baidubce.com/oauth/2.0/token
4.最后一步,我们需要在ruoyi_App上进行测试
因为语音合成返回的是一个音频数据连接,我们需要用uniapp的api来读取音频
我们选用uni.createInnerAudioContext() uni.createInnerAudioContext() | uni-app (dcloud.io)
准备好了后,我们开始书写我们的代码
首先先添加一个按钮 button 给它一个方法 play
<view class="sentence_footer">
<text class="button_text"># {{ item.caption}}</text>
<button class="sentence_button" @click="play(item.content)">
<text class="iconfont icon-laba-copy listen"></text>
</button>
</view>
我们的play方法,写在methods里面
play(content) {
//this.english = 'Здравствуйте, я разработчик Shandong Yi Road, очень рад, что вы можете использовать наши продукты '
const innerAudioContext = uni.createInnerAudioContext()
uni.request({
url: 'https://aip.baidubce.com/oauth/2.0/token',
data: {
grant_type: 'client_credentials',
client_id: '你的ApiKey',
client_secret: '你的Secret Key'
},
success: (res) => {
if (uni.setInnerAudioOption) {
uni.setInnerAudioOption({
obeyMuteSwitch: false,
autoplay: true
})
} else {
innerAudioContext.obeyMuteSwitch = false;
innerAudioContext.autoplay = true;
}
innerAudioContext.onCanplay(() => {
console.log('可以播放');
});
innerAudioContext.onError((res) => {
console.log(res.errMsg);
console.log(res.errCode);
});
innerAudioContext.autoplay = true;
innerAudioContext.src =
'https://tsn.baidu.com/text2audio?lan=zh&ctp=1&cuid=abcdxxx&tok=' +
res.data.access_token + '&tex=' + encodeURIComponent(content) +
'&vol=5&per=0&spd=5&pit=5&aue=3';
innerAudioContext.onPlay(() => {
console.log('开始播放');
});
}
})
},
然后我们ctrl + s 准备运行
代码已经测试成功,我们的语音合成接口完满成功