私は視覚障害者のためのホームオートメーションプロジェクトのためにブラウザ内で音声合成を実装しようとしています。私のテストページでは、speak()
メソッドを呼び出して実際にそれを聞くまでに約1秒の遅れがあることに気付きました。WebスピーチAPIラグコードが悪いのですか、これが期待されていますか?
これが正常な動作であるかどうか、または私が何か間違っているのかどうかは不思議です。誰かがそれをスピードアップする方法についてのアドバイスを(たとえ0.5秒程度)しても私は本当に感謝しています:)
[編集1]
さて、私はMSでテストページを試しましたエッジ(Chromeのみを使用していた)とラグが消えます。私もChromeでWeb Speech Synthesis Demoを試しました。「音声」が「ネイティブ」に設定されていて、ラグもありませんでした。これらのテストは両方とも英国英語の声でテキストをレンダリングしました。
私のテストページでは、オーストラリア - 英語の音声でテキストをレンダリングしています(私はAUです)。再生前にラグがあります。
ローカルのシステム音声を使わずに、Chromeブラウザがいくつかの遠隔地から音声を読み込んでいることがわかりました。この特定のページ(つまり、codepen.ioのデモは同じブラウザで正常に動作します)。しかし、私が知らないのはなぜです。
これは、それが呼び出されるたびに音声を読み込むのではなく、一度だけ音声を読み込んだ場合、それほど問題になることはありません(私はそれが起こっていると推測しています)。
[/ EDIT 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>