当前位置: 首页 > news >正文

广告传媒公司网站金融企业网站模板

广告传媒公司网站,金融企业网站模板,咸阳市城乡建设规划局网站,如何将数据库导入网站背景: 在使用微信官方语音合成插件的时候遇到一个问题,textToSpeech这个api的内容限制在官网的文档上明明是1000个字节,也就是说能保证333个中文字符应该是没有问题的,但是也不知道为什么我这里仅仅传了150个中文字符就报错了&…

背景:
在使用微信官方语音合成插件的时候遇到一个问题,textToSpeech这个api的内容限制在官网的文档上明明是1000个字节,也就是说能保证333个中文字符应该是没有问题的,但是也不知道为什么我这里仅仅传了150个中文字符就报错了,报错内容返回{“retcode”:-20003,“msg”:“text to speech inner server failed.”},查了一下是因为内容过长导致的错误。
解决办法:
事实与文档说明完全不符,这个没办法解决,就想了一个分割内容分段合成的办法,但是分段吧就会有一个问题,那就是如果每段文字合成语音后,播放,然后再合成,在播放,就会出现明显的停顿,一点都不丝滑,很难受,为了解决这个问题,想了一个预加载的办法,也就是预先合成一段段的音频文件,然后将这些音频文件存到一个数组里面,通过shift函数每次从数组取出一个这样就实现了不管多少文字内容,都能够非常丝滑的合成语音文件。
代码:

    data() {return {showAudioModal: false,textAyy: [],audioAyy: [],content: '超长的文本'};},onLoad(e) {this.audioContext =	uni.createInnerAudioContext();this.audioContext.onEnded(() => {if(this.audioAyy && this.audioAyy.length > 0){this.audioContext.src = this.audioAyy.shift()this.audioContext.play()}else{this.showAudioModal = false}})},methods: {async textToSpeech(){this.audioAyy = []this.textAyy = this.splitStringByLength(this.content,100,100)let flag = truefor (var i = 0,len = this.textAyy.length; i < len; i++) {if(i === 0){uni.showLoading({title: '语音加载中',mask: true})}await this.callTextToSpeech(this.textAyy[i]).then(res => {console.log(i)this.showAudioModal = trueif(flag){this.audioContext.src = res;this.audioContext.play();flag = false}else{this.audioAyy.push(res)}uni.hideLoading()}).catch(() => {})}if(flag){uni.hideLoading()uni.showToast({title:'语音合成失败'})}},callTextToSpeech(content){return new Promise((resolve,reject) => {this.$wcs.textToSpeech({lang: "zh_CN",tts: true,content,success: (res) => {console.log("succ tts", res.filename)resolve(res.filename)},fail: function(res) {console.log("fail tts", res)reject()}})})},splitStringByLength(str, maxSize, chunkSize) {const totalLength = str.length;if (totalLength <= maxSize) {return [str];}const chunks = [];let start = 0;while (start < totalLength) {let end = Math.min(start + chunkSize, totalLength);const chunk = str.substring(start, end);chunks.push(chunk);start = end;}return chunks;},
}

大致逻辑
通过async和await保证语音合成的有序性,第一段成功的语音直接播放,后续的放入数组,等音频播放结束事件触发后,自动从数组中获取资源,这样一来就实现了预合成的效果,达到了非常丝滑的效果

http://www.yayakq.cn/news/320695/

相关文章:

  • 福州百度做网站多少钱wordpress作者
  • 统一企业官方网站论文网站建设方案
  • 免费网站模板软件建设校园网站必要性
  • 网站建设 海豚弯万网一台虚拟主机做多个网站
  • 网站制作论坛wordpress清理网站缓存
  • 莱西网站制作联赛与超淘宝客网站做一种还是做好几种
  • 免费的网站模版广东网站建设公司报价表
  • 沧浪苏州网站建设顺企网属于什么网站
  • 做网站的怎样能翻页学编程用什么笔记本电脑比较好
  • 挂机宝做网站可以吗wordpress代码框
  • 做网站卖东西赚钱如何做棋牌网站
  • 如何查网站处罚过wordpress vip会员
  • 建立一个同城网站要怎么做网站建设与设计教程视频
  • 什么网站做旅行计划游戏小程序开发需要多少资本
  • 网站做301怎么做视觉中国设计网
  • 广州页面制作公司seo品牌推广方法
  • 服务器做网站有什么好处湖南住房城乡建设厅网站
  • 中国社区建设展示中心网站信息网络工程师
  • 郑州招聘网站推广温州网页设计哪家好
  • 门户网站首页模板广州网站建设网站优化推广
  • 网站优化如何做pc指数品牌营销推广方案怎么做
  • 广东建设部官方网站网站关闭了域名备案
  • 网站做支付功能搜索引擎优化与推广的产生及发展
  • 静态网站策划书展台设计搭建
  • 关于做网站公司周年大促销数据标签wordpress
  • 做游戏攻略网站赚钱吗wordpress 更新 ftp
  • 深圳北网站建设网站建设与维护的题目
  • 学校做好网站建设目的网站域名实名证明
  • 外贸网站营销方案手机网站公司
  • 一个专门做海鲜的网站合肥网站建设方案优化