javascript - HTML5 音频 : trying to make a queue

标签 javascript html audio queue

我正在使用 JavaScript 和 html5 音频元素开发文本转语音生成器。这个想法是将一串 IPA(国际音标)转换为声音。因此,在函数 talk() 中,我获取字符串并将其拆分。然后,我将相应的声音放入 queue 中,并尝试使用 playQ(q) 函数播放该声音。

但是这个功能好像不起作用。我只能让它播放第一个声音。因此,q[0].play; 正在工作,但 playQ(q) 函数的其余部分却不起作用。

我认为这要么是因为 q.shift() 方法,但我也尝试过 q[1:],要么是因为递归性.

function talk(){
    var queue = []
    var str = document.IPATTS.phonetic.value
    var letters = str.split("")
    for (x in letters) {
        queue.push(document.getElementById(letters[x]))
    }
    playQ(queue);
}

function playQ(q){
    q[0].play();
    var z = q.shift();
    q[0].onended = function() {playQ(z)};
}

最佳答案

如上所述here ,

The shift() method removes the first element from an array and returns that element. This method changes the length of the array.

因此,使用 var z = q.shift() 您正在分配 z = q[0] 此外,q[0]q.shift()

之前和之后将具有不同的值

我认为这样应该有效:

function playQ(q){
    q[0].play();
    q[0].onended = function() {
        q.shift();
        playQ(q);
    //  ^^^^^^^^^
    };
}

关于javascript - HTML5 音频 : trying to make a queue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31833559/

相关文章:

javascript - 一旦用户已经登录,即使他按 Angular 浏览器的后退按钮,也限制重定向到登录页面?

Javascript 图像翻转 - 需要标题,如何添加?

android - 通过左右扬声器传递音频

android - 在 Android 中反转音频文件

android - Android:播放新歌曲之前先停止播放歌曲。

javascript - 创建条件图表

javascript - 单选组,jQuery next 方法无法正常工作

php - PHP中的实时排序查询结果

javascript - JS 中的自定义链接处理(无后续)

javascript - 倒数计数器,用户可以在其中输入结束日期