Я пробую простой пример с синтезом речи.
<script>
voices = window.speechSynthesis.getVoices()
var utterance = new SpeechSynthesisUtterance("Hello World");
utterance.voice = voices[4];
utterance.lang = voices[4].lang;
window.speechSynthesis.speak(utterance);
</script>
Но это дает ошибку, что голоса не определены. Я обнаружил, что getVoices() загружается асинхронно. Я увидел этот ответ и обновил свой код, как показано ниже, чтобы использовать обратный вызов.
<script>
window.speechSynthesis.onvoiceschanged = function() {
voices = window.speechSynthesis.getVoices()
var utterance = new SpeechSynthesisUtterance("Hello World");
utterance.voice = voices[4];
utterance.lang = voices[4].lang;
window.speechSynthesis.speak(utterance);
};
</script>
Но по какой-то странной причине текст произносится три раза вместо одного. Как я могу исправить этот код?