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

新手上路,请多包涵
    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地址改变,播报完语音后,结束播放呢
注:数据是多条的,不是单条

阅读 2k
1 个回答

可能的思路:

  1. 添加到某个播放列表中,对播放列表进行播放,播放列表播放结束为整个播放结束
  2. 增加一个判断来判断是否播放到最后(其实你语句中有判断,但判断的处理可能逻辑上有问题,感觉不该是指监听"ended"中处理)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题