Użyłem następującego kodu, który pokazuje, że Chrome obsługuje mowy, a kod działa dobrze na Firefoksie i Safari, ale nie działa na Chrome (bez dźwięku). Dlaczego? Dziękuję Ci.

<html>
    <head>
    </head>
    <body>
        <form>
            <input type='text'></input>
            <select></select>
        </form>
        <script>
            
            if ( 'speechSynthesis' in window ) {
                var to_speak = new SpeechSynthesisUtterance('Hello world!');
                window.speechSynthesis.speak(to_speak);
            } else {
                alert('not support ');
            }
        </script>
    </body>
</html>

https://codepen.io/sharkdeng/pen/xxoveqb.

1
Shark Deng 17 październik 2020, 20:48

1 odpowiedź

Najlepsza odpowiedź

To dlatego, że w przypadku syntezy mowy chrome wymaga interakcji użytkownika, zanim mówi np. Kliknij przycisk.

Dodałem do twojego kodu, aby umieścić funkcję mówienia za zdarzeniem kliknięcia przycisku.

button.addEventListener('click', () => {
  if ( 'speechSynthesis' in window ) {
    const to_speak = new SpeechSynthesisUtterance(input.value || 'Hello world!');
    speechSynthesis.cancel();
    speechSynthesis.speak(to_speak);
  } else {
    alert('not supported');
  }
});
<form>
  <input type='text' id="input"></input>
  <select id='voiceSelect'></select>
  <button type="button" id="button">Speak</button>
</form>
1
Frazer 17 październik 2020, 18:49