Javascript 以数组形式说话

Javascript 以数组形式说话,javascript,text-to-speech,speech-synthesis,webspeech-api,Javascript,Text To Speech,Speech Synthesis,Webspeech Api,我有一系列的单词,我想用 单词是一,二,三,四,五 在Chrome上说单词时,下面的脚本先说第一个单词,然后重复最后一个单词,直到迭代完成,语音输出为: 一,五,五,五,五 在Firefox上,脚本说出第一个单词,然后停止,语音输出为: 一个 我把事情记录到控制台上,试图弄清楚发生了什么,这是两种浏览器的结果 word: one message: one word: two message: two word: three message: three word: four mess

我有一系列的单词,我想用

单词是一,二,三,四,五

在Chrome上说单词时,下面的脚本先说第一个单词,然后重复最后一个单词,直到迭代完成,语音输出为:

一,五,五,五,五

在Firefox上,脚本说出第一个单词,然后停止,语音输出为:

一个

我把事情记录到控制台上,试图弄清楚发生了什么,这是两种浏览器的结果

word: one
message: one 
word: two 
message: two 
word: three 
message: three 
word: four 
message: four 
word: five 
message: five
控制台的输出是所需的语音输出,因此我不确定到底发生了什么

var msg=newspeechsynthesisutterance();
var words=['1','2','3','4','5'];
for(var i=0;i}
每次都需要使用一个新的
SpeechSynthesistTerrance
实例

var words = ['one', 'two', 'three', 'four', 'five'];

for (var i = 0; i < words.length; i++) {
    var msg = new SpeechSynthesisUtterance();
    msg.text = words[i];

    console.log('word: ' + words[i]);
    console.log('message: ' + msg.text);

    window.speechSynthesis.speak(msg);
}
var words=['1','2','3','4','5'];
for(var i=0;i

语音不会在零时间播放,并且后续的
SpeechSynthesisUtterance
实例似乎被放置在队列中,直到前一个语音播放完毕。您重复使用同一实例,在通过
speak(…)
将值排入队列后,但在将其弹出队列并读取之前,修改这些值。第一句话(“一”)播放正确,因为队列中没有其他东西可以阻止它(立即读取),但其余的话需要等待,并在读取之前进行修改。

控制台中有错误吗?@ochi控制台中没有错误。