2

Web Speech APISpeechSynthesis Interfaceを使用するフロントエンド ユーザー インターフェイスを作成しています。

私は一般的にそれに満足しています。単語がアメリカ語、イギリス語、オーストラリア語、キウイ語、南アフリカ語、インド語、シングリッシュ語、フィリピン語などのアクセントで発音されているかどうかは気にしませんが、SpeechSynthesis Interfaceが単語を台無しにする場合にどのようにアプローチすればよいかわかりません。

これまでに思いついた唯一の解決策は、次のものを置き換えることです。

  • 単一の文字列(音声合成装置は、ユーザーが読んだ文字列と同じ文字列を話します)

と:

  • 文字列のペア(スピーチ シンセサイザーは、ユーザーが読む文字列とは別の文字列 (指定された対応する文字列) を読み上げます)

例:

const buttons = document.querySelectorAll('button');

const speakWord = (e) => {
  
  const word = e.target.dataset.word;
  let utterance = new SpeechSynthesisUtterance(word);
  speechSynthesis.speak(utterance);
}

buttons.forEach((button) => {
  button.addEventListener('click', speakWord, false);
});
h2 {
  display: inline-block;
  margin-right: 12px;
  font-size: 14px;
}

button {
  cursor: pointer;
}
<h2>Say:</h2>
<button type="button" data-word="manifests">"manifests"</button>
<button type="button" data-word="modules">"modules"</button>
<button type="button" data-word="configuration">"configuration"</button>

<br>

<h2>Now say:</h2>
<button type="button" data-word="protocols">"protocols"</button>
<button type="button" data-word="web app">"web app"</button>

<br>

<h2>Finally say:</h2><button type="button" data-word="proto kols">"proto kols"</button>
<button type="button" data-word="weh bapp">"weh bapp"</button>

ペアで単語​​を作成し、「プロトコル」「Web アプリ」という単語がユーザーに表示されるたびに「proto kols」 weh bapp」を話すようにSpeech Synthesizerに指示する以外に、オーバーライドするために使用できる他のアプローチはありますか?マングリング?

4

1 に答える 1

1

私も同じ問題を抱えていました。utterance.rate パラメータを低い値に設定してみました。英語は rate を 0.5 に設定した方が分かりやすかった。発音速度が遅くない場合は、パラメーターをより低い値に設定できます。

const u = new SpeechSynthesisUtterance('web app');
speechSynthesis.speak(u);

u.rate = 0.5;
speechSynthesis.speak(u);
于 2021-08-16T16:57:14.603 に答える