我正在使用 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/