我正在使用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)};
}
答案 0 :(得分:1)
如上所述here,
shift()方法从数组中删除第一个元素并返回该元素。此方法更改数组的长度。
因此,使用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);
// ^^^^^^^^^
};
}
答案 1 :(得分:0)
没关系!用它来工作
var z = []
for (x in q) {
if (x > 0) {
z.push(q[x])
}
}
代替var z = q.shift();