WebSpeech の speechSynthesis モジュールを使用して、Web アプリケーションに音声を話させています。ただし、発話をキューに追加してから、キュー全体を一時停止()、再開()、およびキャンセル()することしかできないようです。
2 つの発話が必要な状況があります。
utterance1 = new SpeechSynthesisUtterance(text1);
utterance2 = new SpeechSynthesisUtterance(text2);
発話 1 を再生してから、途中で一時停止し、発話 2 を再生してから、発話 1 を再開したいと考えています。コードでは、次のようになります。
speechSynthesis.speak(utterance1);
// ... after a while
speechSyntehsis.pause(utterance1);
speechSynthesis.speak(utterance2);
// ... after a long while
speechSynthesis.resume(utterance1);
残念ながら、speechSynthesis のメソッドの pause()、resume()、および cancel() は引数を取らず、音声発話キュー全体に作用します。この動作を実現する方法はありますか?
複数の speechSynthesis オブジェクトを持つことができれば、発話ごとに 1 つ作成できますが、1 つしか持てないと思います。
文字列のどこで発話が「発話された」かを追跡できれば、それをキャンセルして残りのテキストで新しい発話を作成できますが、それが可能かどうかはわかりません。
助言がありますか?