Web Speech API というのが存在することを最近知ったので。あんまり変数が飛び散らないように、ざっくりまとめた。喋るかどうかは未確認→PC版 Chromeで喋りました。
speechSynthesis.getVoices() が取れるタイミングがよくわからないみたいなので、setTimeout() で取得。
speechSynthesis.onvoiceschanged で .getVoices() が変わるタイミングが取れるみたいなんだけど、手元の環境ではうまくいかなかった。