どうやら Chrome とかだとしゃべらせることができるらしい。

SpeechSynthesisUtterance - Web API | MDN

Web Speech API の SpeechSynthesisUtterance インターフェイスは、発話リクエストを表します。これには、speech サービスが読み上げるコンテンツと、その読み上げ方についての情報 (言語、音の高低、音量) が含まれます。

function speak() {
  var speech = new SpeechSynthesisUtterance();
  speech.text = document.querySelector('.haiku').innerText.replace('\n', '');
  speech.lang = 'ja-JP';
  speech.rate = 0.8;
  var voices = [...window.speechSynthesis.getVoices()].filter((e) => e.lang === 'ja-JP');
  if (voices.length > 0) {
    speech.voice = voices.pop();
  }
  speechSynthesis.speak(speech);
}

rate はしゃべる速度を調整できる。

ちょっと遅めがいいので 0.8 にしている。

音声はブラウザに入ってるものしか使えないので ja-JP のものだけを取得して一番ユニークそうなものを採用することにした。