项目场景:
提示:这里简述项目相关背景:
小程序通过文字自动转换成语音
问题描述
`提示:后端无法传过来大量的语音文件,占用带宽,
解决方案:
提示:这里填写该问题的具体解决方案:
1,调用微信程序的同声传译组件,首先微信公众号平台申请同声传译组件
2,在小程序app.json中配置页面
app.json
"plugins": {
"WechatSI": {
"version": "0.0.7",
"provider": "wx069ba97219f66d99"//这APPID是小程序组件的APPID不是自己的
}
},
3,对应页面的js页面
引入这两个
var plugin = requirePlugin("WechatSI")
const manager = plugin.getRecordRecognitionManager();
4,实现文字转语音,
wxml页面
<view class="yuyinWrap">
<textarea class='yuyinCon' placeholder='请输入内容' model:value='{{content}}' bindinput='conInput'></textarea>
<view class=''>
<button class="yuyinBtn start" bindtap='wordYun'>开始</button>
<button class="yuyinBtn" bindtap='end'>结束</button>
</view>
</view>
data数据
Page({
data: {
content:'',//内容
src:'',//路径方便直接转成语音文件播放
},
)}
调用的方法
wordYun:function(e){
var that=this
var content=this.data.content;
plugin.textToSpeech({
lang: "zh_CN",//语言
tts: true,
content: content,//接收的语音文件
success: function(res) {
that.setData({
src:res.filename//语音文件下载路径
})
that.text_audio_status();//调用此方法来监听语音播放情况
},
fail: function(res) {
console.log("fail tts", res)
}
})
},
获取的语音文件解析
text_audio_status:function(){
//判断语音路径是否存在
if (this.data.src == '') {
console.log(暂无语音);
return;
}
const innerAudioContext = wx.createInnerAudioContext();//创建音频实例
innerAudioContext.src = this.data.src; //设置音频地址
innerAudioContext.play(); //播放音频
innerAudioContext.onPlay(() => {
console.log('//监听开始播放');
});
innerAudioContext.onEnded(() => {
console.log('监听播报结束,可在结束中进行相应的处理逻辑');
innerAudioContext.stop();
//播放停止,销毁该实例,不然会出现多个语音重复执行的情况
console.log('销毁innerAudioContext实例')
innerAudioContext.destroy();
})
innerAudioContext.onError(() => {
console.log('监听语音播放异常')
innerAudioContext.destroy()//销毁播放实例
})
},