!7 cmodule AudioFeedbackPreventer > DynPrintLogAndEnabled { // from end of talking to recognition coming in switchable double expectedDelay = 2.0; transient long talkingSince; transient LongRange lastTalked; start { dm_vmBus_onMessage talking(r { talkingSince = sysNow() }); dm_vmBus_onMessage doneTalking(r { lastTalked = longRange(talkingSince, sysNow()); talkingSince = 0; }); } // API bool recognizedSpeechIsProbablyMyOwnUtterance() { if (isTrue(dm_haveHeadphones())) false; // Voice output goes to headphones, so we can't hear it if (talking) true; ret lastTalked != null && elapedSeconds_sysNow(lastTalked.end) <= expectedDelay; } }