ページの読み込み時にvoiceschangedイベントが発生するのはなぜですか?

NattyC

Chromeでは、voiceschangedはページの読み込みspeechSynthesis.getVoices()voiceschangedに起動するため、起動時に呼び出すイベントリスナーがある限り、空の配列を音声で埋めるために最初に持っていた関数を呼び出す必要はありません

// Store voices
let voices = [];

function getVoices() {
  voices = speechSynthesis.getVoices();

  // Create an option for each voice in array
  voices.forEach((voice) => {
    const option = document.createElement('option');

    option.value = voice.name;
    option.innerText = `${voice.name} ${voice.lang}`;

    voicesSelect.appendChild(option);
  });
}

// Voices changed
speechSynthesis.addEventListener('voiceschanged', getVoices);

// Not needed (in Chrome at least) because voiceschanged event fires on page load, calling getVoices due to event listener (trying to figure out why)
// getVoices();

私はこの振る舞いを理解しようとしているだけです-音声が変化したときのMDNの説明は、私が知る限りそれを説明していません:

Web Speech APIのvoiceschangedイベントは、SpeechSynthesis.getVoices()メソッドによって返されるSpeechSynthesisVoiceオブジェクトのリストが変更されたときに発生します(voiceschangedイベントが発生したとき)。

HoldOffHunger

ChromeがAPI呼び出しを終了すると音声のリストが変更され、Chromeユーザーのみが利用できる音声のリストが取得されるため、イベントが発生します。証明:

  • インターネット接続を使用してSpeechSynthesis APIベースのWebアプリをロードすると、21の音声が利用可能になりますが、数か月前は10または15程度しか覚えていません。
  • インターネットに接続せずに同じことをすると、Microsoft DavidDesktopとMicrosoftZiraDesktopの2つの声しかありません。

インターネットに接続されていない2つの音声はかなり退屈で、安価なオーディオ制作で使用されていることがほとんど認識できることに気付くでしょう。しかし、Google Chromeのものは流動的で、ほとんど影響力がありません。もちろん、このイベントはボイスがロードされたときに発生する必要があります。Web SpeechAPI仕様のW3Cエラッタをざっと見てくださいボイスがロードされるたびに、voiceschangedイベントが発生します。

voiceschanged:getVoicesメソッドが返すSpeechSynthesisVoiceListの内容が変更されたときに発生します。例としては、リストが非同期で決定されるサーバー側の合成、またはクライアント側の音声がインストール/アンインストールされる場合があります。

そして、実際には、リンクしMDNWebドキュメントの最後の行を見てください...

ただし、Chromeでは、リストにデータを入力する前にイベントが発生するのを待つ必要があるため、以下に示すifステートメントの下部にあります。

音声合成APIベースのソースコード(私のオープンソースプロジェクトPronounceThatから)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

onchangeイベントがトリガー時ではなく、ページの読み込み時に発生するのはなぜですか?

分類Dev

ページの読み込み時にイベントクリックが発生する

分類Dev

「load」または「DOMContentLoaded」がページが読み込まれる前にプロンプトの発生を停止しないのはなぜですか?

分類Dev

divクリックイベントはページの読み込み時に自動的に発生します

分類Dev

jquery-ページの読み込み時に発生するcolorpickerslidersonChangeイベント

分類Dev

ページの読み込み時にng-checkedが2回起動するのはなぜですか

分類Dev

最初の読み込みページを選択するときにエラーが発生するのはなぜですか?

分類Dev

onShowイベントは、各ページの再読み込み中に不必要に発生します

分類Dev

「DocumentReady」に入れても、ページを読み込んだときにjQueryの「追加」が発生するのを確認できるのはなぜですか?

分類Dev

最初のページの読み込み時にのみページが未定義の変数を取得するのはなぜですか?

分類Dev

Angular 2でrxjs-extensionsの読み込み中にエラーが発生するのはなぜですか?

分類Dev

この関数がページの読み込み時に実行されないのはなぜですか?

分類Dev

この関数がページの読み込み時に実行されないのはなぜですか?

分類Dev

Ansible YAMLの読み込み中に構文エラーが発生するのはなぜですか?

分類Dev

「Webデバッグツールバーの読み込み中にエラーが発生しました」と表示されるのはなぜですか。このイベントサブスクライバーを使用する場合は?

分類Dev

クリックイベントではなく、ページの読み込み時に起動するJavascriptイベントリスナー

分類Dev

ページの読み込み時に存在しない要素にonclickイベントを適用する

分類Dev

データの読み込み時に発生するクイルの「テキスト変更」イベント

分類Dev

これがページの読み込み時にのみ正しく機能するのはなぜですか?

分類Dev

ドキュメントの読み込み時にクリックイベントが発生するTampermonkey

分類Dev

jQueryは、ページの読み込み時にイベントから関数を実行します

分類Dev

HTMLインポートの読み込みが完了すると、イベントが発生しますか?

分類Dev

asp.netリピーターボタンは最初のページの読み込み時にイベントを発生させませんが、ポストバック後に発生します

分類Dev

選択したオプションでイベントをトリガーするページの読み込み時に読み込み

分類Dev

プログレスバー全体の読み込みが完了する前に、イベントRunWorkerCompletedEventArgsが起動するのはなぜですか?

分類Dev

バイトからの読み取り時に終了しないループが発生するのはなぜですか?

分類Dev

バイトからの読み取り時に終了しないループが発生するのはなぜですか?

分類Dev

jQuery .on( 'click'、foo)がクリックではなくページの読み込み時に関数を実行するのはなぜですか?

分類Dev

ページの読み込み中に$(window).width()が変更されるのはなぜですか?

Related 関連記事

  1. 1

    onchangeイベントがトリガー時ではなく、ページの読み込み時に発生するのはなぜですか?

  2. 2

    ページの読み込み時にイベントクリックが発生する

  3. 3

    「load」または「DOMContentLoaded」がページが読み込まれる前にプロンプトの発生を停止しないのはなぜですか?

  4. 4

    divクリックイベントはページの読み込み時に自動的に発生します

  5. 5

    jquery-ページの読み込み時に発生するcolorpickerslidersonChangeイベント

  6. 6

    ページの読み込み時にng-checkedが2回起動するのはなぜですか

  7. 7

    最初の読み込みページを選択するときにエラーが発生するのはなぜですか?

  8. 8

    onShowイベントは、各ページの再読み込み中に不必要に発生します

  9. 9

    「DocumentReady」に入れても、ページを読み込んだときにjQueryの「追加」が発生するのを確認できるのはなぜですか?

  10. 10

    最初のページの読み込み時にのみページが未定義の変数を取得するのはなぜですか?

  11. 11

    Angular 2でrxjs-extensionsの読み込み中にエラーが発生するのはなぜですか?

  12. 12

    この関数がページの読み込み時に実行されないのはなぜですか?

  13. 13

    この関数がページの読み込み時に実行されないのはなぜですか?

  14. 14

    Ansible YAMLの読み込み中に構文エラーが発生するのはなぜですか?

  15. 15

    「Webデバッグツールバーの読み込み中にエラーが発生しました」と表示されるのはなぜですか。このイベントサブスクライバーを使用する場合は?

  16. 16

    クリックイベントではなく、ページの読み込み時に起動するJavascriptイベントリスナー

  17. 17

    ページの読み込み時に存在しない要素にonclickイベントを適用する

  18. 18

    データの読み込み時に発生するクイルの「テキスト変更」イベント

  19. 19

    これがページの読み込み時にのみ正しく機能するのはなぜですか?

  20. 20

    ドキュメントの読み込み時にクリックイベントが発生するTampermonkey

  21. 21

    jQueryは、ページの読み込み時にイベントから関数を実行します

  22. 22

    HTMLインポートの読み込みが完了すると、イベントが発生しますか?

  23. 23

    asp.netリピーターボタンは最初のページの読み込み時にイベントを発生させませんが、ポストバック後に発生します

  24. 24

    選択したオプションでイベントをトリガーするページの読み込み時に読み込み

  25. 25

    プログレスバー全体の読み込みが完了する前に、イベントRunWorkerCompletedEventArgsが起動するのはなぜですか?

  26. 26

    バイトからの読み取り時に終了しないループが発生するのはなぜですか?

  27. 27

    バイトからの読み取り時に終了しないループが発生するのはなぜですか?

  28. 28

    jQuery .on( 'click'、foo)がクリックではなくページの読み込み時に関数を実行するのはなぜですか?

  29. 29

    ページの読み込み中に$(window).width()が変更されるのはなぜですか?

ホットタグ

アーカイブ