Web Speech API: два высказывания одновременно

Я использую Web Speech API и задаюсь вопросом, возможно ли одновременное выполнение двух экземпляров SpeechSynthesisUtterance(), чтобы голоса накладывались друг на друга.

Сокращая мой текущий код, у меня есть две функции, каждая из которых определяет новый экземпляр SpeechSynthesisUtterance(), а затем вызывает их обе. Однако результирующая диктовка чередуется между двумя экземплярами, так что если голос 1 говорит «бум, чика», а голос 2 говорит «лук, вау», то я слышу «бум, поклон, чика, вау», а не «бум + лук, чикка + вау».

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);

person Spencer Pope    schedule 28.06.2015    source источник


Ответы (1)


В документации MDN на window.speechSynthesis.speak() говорится

Метод speak() интерфейса SpeechSynthesis добавляет высказывание в очередь высказываний; оно будет произнесено, когда любые другие высказывания стоят в очереди до того, как оно будет произнесено.

Так что, думаю, нет.
(Если вы хотите по-настоящему разобраться, вот спецификация W3 - но там написано то же самое)

А пока я использую внешний сервис TTS на основе аудиофайлов. Они менее ограничены в параллелизме.

person neo post modern    schedule 06.02.2016