視覚障害者向けのホーム オートメーション プロジェクト用にブラウザ内音声合成を実装しようとしています。私のテスト ページでは、speak()
メソッドを呼び出してから実際にそれを聞くまでに約 1 秒のタイムラグがあることに気付きました。
これが正常な動作なのか、それとも私が何か間違ったことをしているのか疑問に思っています。誰かがそれをスピードアップする方法についてアドバイスを提供できる場合(0.5秒程度でも)、本当に感謝しています:)
[編集 1]
では、MS Edge (Chrome のみを使用していた) でテスト ページを試してみたところ、ラグがなくなりました。「音声」を「ネイティブ」に設定して、Chrome でWeb Speech Synthesis Demoも試しましたが、ラグもありませんでした。これらのテストはどちらも、英国英語の音声でテキストをレンダリングしました。
Chrome では、私のテスト ページはオーストラリア英語の音声 (私は AU にいます) でテキストをレンダリングし、再生するまでに遅延があります。
私の直感によると、Chrome ブラウザーは、ローカル システムの音声を使用する代わりに、リモートの場所から音声を読み込み、この特定のページに対してのみ読み込んでいます (つまり、codepen.io のデモは同じブラウザーで正常に動作します)。しかし、私が知らないのはその理由です。
音声が呼び出されるたびに読み込まれるのではなく、一度だけ読み込まれるのであれば、これはそれほど問題にはなりません (それが起こっていると思います)。
[/編集 1]
これが私のコードです:
<body>
<div class='col col-xs-6'>
<div style='width:100%;'>
<button type='button' class='btn' onmouseover='speak("mouse over");' onmouseout="cancel();">
Test button.
</button>
</div>
</div>
<p id="msg"></p>
<script type="text/javascript">
var globalVolume = 0.8;
var globalRate = 1;
var globalPitch = 0.9;
var enterMsg = "Mouse over";
function speak(text) {
var msg = new SpeechSynthesisUtterance();
msg.text = text;
msg.volume = globalVolume;
msg.rate = globalRate;
msg.pitch = globalPitch;
//msg.voice = "native";
window.speechSynthesis.speak(msg);
}
function cancel() {
window.speechSynthesis.cancel();
}
//speak("Hello, world!");
</script>
</body>