I set it up with a USB audio interface hooked up to a Zoom H4N. Absolutely overkill but it worked well. Although for some reason the Pi refuses to talk directly to the H4N.
Sticking with the recommended one for now isn't a bad idea- someone out there will have the right combination of Microphone and free time, and will figure out a better solution if there is one.
I had been planning to either modify the JS code to accept an arcade button as the push to talk input, or use Python UI automation to simulate a mouse click. Not quite always-listening, but a start.