Я использую модуль WebSpeech speechSynthesis, чтобы веб-приложение говорило. Однако кажется, что вы можете только добавлять высказывания в очередь, а затем выполнять паузу(), возобновление() и отмену() всей очереди.
У меня есть ситуация, когда я хочу иметь два высказывания:
utterance1 = new SpeechSynthesisUtterance(text1);
utterance2 = new SpeechSynthesisUtterance(text2);
Я хотел бы воспроизвести высказывание1, затем приостановить его в середине, воспроизвести высказывание2, а затем возобновить высказывание1. В коде это будет выглядеть так:
speechSynthesis.speak(utterance1);
// ... after a while
speechSyntehsis.pause(utterance1);
speechSynthesis.speak(utterance2);
// ... after a long while
speechSynthesis.resume(utterance1);
К сожалению, методы речевого синтеза pause(), возобновить() и отмена() не принимают никаких аргументов и воздействуют на всю очередь речевого высказывания. Есть ли способ добиться такого поведения?
Если бы у меня было несколько объектов speechSynthesis, я мог бы создать по одному для каждого высказывания, но я считаю, что у меня может быть только один.
Если бы я мог отслеживать, где в строке «было произнесено» высказывание, я мог бы отменить его, а затем создать новое высказывание с остатком текста, но я не знаю, возможно ли это.
Какие-либо предложения?