speechSynthesis.speak が Chrome で動作しない 質問する

speechSynthesis.speak が Chrome で動作しない 質問する

Windows 10 で Chrome バージョン 55.0.2883.87 m (64 ビット) を使用しています。

次の単純な HTML ファイルは問題を再現するもので、私のより複雑なアプリから抽出したものです。ページの読み込み時に 3 つの単語を読み上げることになっています。MS Edge と Firefox では動作しますが、Chrome では動作しません。このコードは数週間前までは Chrome で問題なく動作していました。

<html>
<head>
    <script lang="javascript">
        window.speechSynthesis.speak(new SpeechSynthesisUtterance("cat"));
        window.speechSynthesis.speak(new SpeechSynthesisUtterance("dog"));
        window.speechSynthesis.speak(new SpeechSynthesisUtterance("bark"));
    </script>
</head>
<body></body>
</html>

ベストアンサー1

この問題は断続的に発生するため、確実には分からないかもしれないが、話す直前にキャンセルする

utter = new window.SpeechSynthesisUtterance("cat");

window.speechSynthesis.cancel();
window.speechSynthesis.speak(utter);

キャンセルは必ずしも発話オブジェクトの作成と使用の間に行う必要はないと思います。ただ、すべての発話の前に行う必要があります。私は発話オブジェクトを 1 つだけ作成していて、複数作成していなかったため、別の問題が発生した可能性があります。この問題は Chrome 78 でのみ発生しました。Windows 7、64 ビットを使用しています。Firefox や Edge ではこの問題は発生しませんでした。

編集 2 週間後。数十回試しても再発はありません。.cancel() で問題が解決したようです。症状は次のとおりです。Chrome で speechSynthesis.speak() を呼び出すと、音声が開始されないことがあります。コードに問題があることを示す即時の兆候はなく、はspeechSynthesis.speakingtrue、は false でした。発話オブジェクトからのイベントはありませんでした。通常、音声が機能すると、 .speak() を呼び出してから約 0.1 秒後にイベントが.pending発生します。'start'

おすすめ記事