Для обхода проблемы (используя SpeechSynthesisUtterance
) я измеряю время с помощью события onend
.Это не выполнимо для всех ситуаций, так как это займет некоторое время, и не очень точно.Вы можете увеличить скорость (до 10), но это будет очень неточно.
var speed = 2;
var text = "Test";
var speech = new SpeechSynthesisUtterance(text);
speech.volume = 0 / 100;
speech.rate = speed;
speech.onend = function (event : SpeechSynthesisEvent) {
var speakDuration = event.elapsedTime * speed;
// save the speakDuration
};
window.speechSynthesis.speak(speech);