2017-01-12 9 views
2

私は視覚障害者のためのホームオートメーションプロジェクトのためにブラウザ内で音声合成を実装しようとしています。私のテストページでは、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> 

答えて

1

あなたは非ネイティブの声のいずれかを選択した場合は、あなたの更新に理論化されたとおり(グーグル」で始まるもののいずれかの")、サウンドはGoogleサーバー上で生成され、ブラウザに送信され、遅延が発生します。実際にはブラウザに音声を読み込むわけではありません.TTSを使用しようとするたびに、それをサーバーに送信してサウンドを生成します。だから残念ながら、あなたのコンピュータ上で利用可能なネイティブ音声以外何も使用していないときは、ネットワーク遅延が常に存在します。遅延を除いて、あなたが生成したすべてのスピーチがGoogleに送信されるというプライバシーに関する懸念もあります(NSAまたは他のサーバーでスパイしている可能性もあります)。 EdgeとFirefoxはデフォルトでネイティブ音声を使用しており、Googleの独自仕様を選択することはできません。なぜなら、彼らは常に遅延がないからです。

関連する問題