问答

(文字转语音)如何能够实现语音播报完成之后结束呢??

作者:admin 2021-04-21 我要评论

var newUrl = []; var url = "http://tts.baidu.com/text2audio?lan=zhie=UTF-8spd=3text=" + encodeURI(str); console.log("url:" + url); newUrl.push(url); c...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)
    var newUrl = [];
    var url = "http://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&spd=3&text=" + encodeURI(str);
    console.log("url:" + url);
    newUrl.push(url);
    console.log("audioUrl-111:" + JSON.stringify(newUrl));
    this.audio.src = "";
    this.audio.onloadstart = () =>{
        // console.log("tts start:" + url);
        console.log("tts start:" + newUrl);
    };
    this.audio.addEventListener('ended',() =>{
        for(let i = 0;i < newUrl.length; i++){
            if(newUrl.length === 1){
                this.audio.src = newUrl[0];
                // console.log("时长:" + this.audio.duration);
                // this.audio.src = "";
            }else {
                this.audio.src = newUrl[i];
            }
        }
        this.audio.src = "";
    },false);
    this.audio.autoplay = true;
    // this.audio.pause();
    this.audio.load();

我想请问下我上面这个代码需要怎么修改,才能满足语音的src地址改变,播报完语音后,结束播放呢
注:数据是多条的,不是单条

###

可能的思路:

  1. 添加到某个播放列表中,对播放列表进行播放,播放列表播放结束为整个播放结束
  2. 增加一个判断来判断是否播放到最后(其实你语句中有判断,但判断的处理可能逻辑上有问题,感觉不该是指监听"ended"中处理)

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • (文字转语音)如何能够实现语音播报完

    (文字转语音)如何能够实现语音播报完

  • vue-cli electron 怎样获得绝对路径?

    vue-cli electron 怎样获得绝对路径?

  • 为什么我的slot标签外面包上一层div,

    为什么我的slot标签外面包上一层div,

  • 这个问题是关于文件上传请求体的内容的

    这个问题是关于文件上传请求体的内容的

腾讯云代理商
海外云服务器