网络语音API:两个话语同时出现

Web Speech API: two utterances at same time

本文关键字:话语 两个 API 语音 网络      更新时间:2023-09-26

我正在使用Web Speech API,想知道是否可以同时运行两个SpeechSynthesisUtterance()实例,以便将语音分层。

缩写我当前的代码,我实际上有两个函数,每个函数都定义了SpeechSynthesisUtterance()的一个新实例,然后同时调用它们。然而,由此产生的听写在这两个例子之间交替,这样,如果声音1说"轰,chicka",而声音2说"bow,wow",那么我听到的是"轰,bow,chicka-wow"而不是"轰+bow,奇卡+wow"。

function speak(text) {
// Create a new instance of SpeechSynthesisUtterance.
var msg = new SpeechSynthesisUtterance();
//some code here where I define parameters like volume, pitch which I left out
window.speechSynthesis.speak(msg);
}
function speak2(text2) {
// Create another new instance of SpeechSynthesisUtterance.
var msg2 = new SpeechSynthesisUtterance();
//some code here where I define parameters like volume, pitch which I left out
window.speechSynthesis.speak(msg2);
}
speak(text);
speak2(text2);

window.speechSynthesis.speak()上的MDN文档显示

SpeechSynthesis接口的speak()方法将一个话语添加到话语队列中;当任何其他话语在它被说出之前排队时,它将被说出。

所以我想这是否定的。
(如果你想真正了解它,这里是W3规范,但它说的是一样的)

同时,我正在使用一个基于音频文件的外部TTS服务。这些在并行性方面受到的限制较小。