OK. First of all, this will sound like an annoying request, but try another port. I know they are probably all the same, but humor me.
Also, I'm not sure this is the best solution, but give it a whirl and let me know. See the attached zip for a test .exe
Every 20 seconds, it checks to see how long since there was a mic event. Usually they are every couple of seconds, though I'm not really sure why... Microsoft doesn't really document this stuff. Anyway if it has been more than 5 seconds since the last update it should try to do a reset, similar to switching off and on.
This will probably not work well with an idle timeout if you are using that.