Cross-browser microphone access in JavaScript