ブラウザの TextToSpeech を async function で書く

2023-05-03 02:47 (2 years ago)
Muted Invocation
この記事をテーマにした曲を再生

SpeechSynthesisUtterance の speech メソッドを await するコードです。 ウェブブラウザに発声させる処理を同期的に行います。

ちなみに、ブラウザを開いた瞬間に自動的に speak することはブラウザのセキュリティの都合上できません。 最低1回、ページ内のなにかのボタンをクリックするなどをユーザーにしてもらわないと発声しません。

function asyncSpeak(text) {
  const ssu = new SpeechSynthesisUtterance()
  ssu.text = text
  ssu.lang = 'en-US'
  speechSynthesis.speak(ssu)
  return new Promise((resolve, reject) => {
    ssu.onend = () => {
      resolve()
    }
  })
}

async function onStarted() {
  await asyncSpeak('one two three four five six seven eight nine ten')
  console.log('end')
}

アーカイブ