現在実装済みのweb上対話システムは、対話が進むたびに画面がリロードされてしまう
これだと音声対話を実装したいと考えたとき、リロード後の先頭の対話内容を音声合成させる必要がある
しかし、リロードを検出する関数はjavascriptやdjangoには用意されていないので対処法がない
そこで、ここでは時間差を計算することで音声対話を実装した
最後の対話を生成した時間とリロードが完了した時間差が3秒以内だった場合に、音声合成を行い、発話するように設定
このlast_dateに対話を生成した日時を入れています。モデルはDateTimeFieldです。
window.onload = function() {
var str = {{ last_post|safe }};
const uttr = new SpeechSynthesisUtterance(str);
if (Math.abs(Number("{% now 'His'%}")-Number("{{ last_date|date:'His' }}"))<3){
speechSynthesis.speak(uttr);
};
console.log(uttr);
};
成功しました!!🙌
実際どんなふうにweb上で音声対話を実装しているの?と気になる方はお問合せからご連絡ください。もし要望があれば詳しく載せていきたいと思います。