安卓企业语音播放延迟

项目场景:

近期在做项目过程中,需要一个点击每条信息上面的按钮,进行语音播报的效果,因每条信息上的文本都不一致,需要对文本进行转义,通过小程序的plugin.textToSpeech()将文本转换为音频,然后正常按照音频的相关方法进行播放即可。


问题描述:

电脑真机运行以及IOS上运行都没问题,但是安卓企业微信上会有将近30s的延迟

 

原因分析:

刚碰到这个问题查了许多方案,后来干脆想等企业微信升级,但最后还是觉得可以搞一波,可以i从头分析一下,通过小程序的plugin.textToSpeech()转换出来的结果中res.filename为我们 需要的音频地址。

plugin.textToSpeech({
     lang: "zh_CN",
     tts: true,
     content: e,
     success: function(res) {
        //that.conChangeIf = res.origin;        //转换后的音频内容
        innerAudioContext.src = res.filename; //设置音频地址
     },
     fail: function(res) {
       console.log("fail:", res)
     }
 })

1、开始以为文字转音频太慢,打印了一下日志,然后发现哎哟~~,文字转语音的这个步骤人家还是蛮快的呀

2、难道按住转出来的音频有问题?再打印一波,然后拿安卓上打印出来的音频在浏览器上播放,哎哟哟~~贼溜,不过嘛,这一打印还是有发现的:

res.filename返回的结果为一个mp3音频格式路径(但这个出来后是直接被下载的数据流,安卓企业微信对数据流的直接播放有一个过程时间)

网上查了许多方案,有说是 讯飞语音合成MP3文件格式问题,让后台改一下音频格式,

参考:微信小程序wx.createInnerAudioContext()在安卓手机不能播放语音文件问题解决 | 微信开放社区

嗯。。。。但是!!当前这个项目后台访问外网很费劲,几乎是不允许的,所以呢!以上方案对我不可行!悲伤辣么大!!!(安卓上打印出来的音频地址在谷歌浏览器这边将文件先下载下来后,上传到服务器上,然后发现。。。嗯,人家合成的mp3音频并不卡嘛,所以问题定位了:就是企业微信对数据流的操作有问题)


解决方案:

既然企业微信直接播放数据流太慢,那我可以把这个数据流下载完成后当作一个普通的mp3的音频文件去播放

 textToVoice(e) {
        var that = this
        plugin.textToSpeech({
          lang: "zh_CN",
          tts: true,
          content: e,
          success: function(res) {
            wx.downloadFile({
                url:res.filename,
                success (res) {
                  innerAudioContext.src = res.tempFilePath; //设置音频地址
                  that.end();
                  that.yuyinPlay();

                }
              })
            
          },
          fail: function(res) {
            console.log("fail:", res)
          }
        })
      },
    //播放语音
      yuyinPlay(e) {
        let that=this;
        if (that.srcvoice == '') {
          return;
        }
        innerAudioContext.seek(0);
        innerAudioContext.play();

        wx.setStorage({
          key:"playCon",
          data:that.conChangeIf
        })
      },
      end(){
        innerAudioContext.stop();
      }

Tips:记得在合适的位置移除掉你下载的文件哦!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值