@mjyc/voice-activity-detection
Version:
Mic input activity detection
63 lines (54 loc) • 1.62 kB
JavaScript
var vad = require("../index.js");
var audioContext;
var valueContainer = document.createElement("div");
document.body.appendChild(valueContainer);
var stateContainer = document.createElement("div");
document.body.appendChild(stateContainer);
requestMic();
function requestMic() {
try {
window.AudioContext = window.AudioContext || window.webkitAudioContext;
audioContext = new AudioContext();
navigator.getUserMedia =
navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia ||
navigator.msGetUserMedia;
navigator.getUserMedia(
{ audio: true },
startUserMedia,
handleMicConnectError
);
} catch (e) {
handleUserMediaError();
}
}
function handleUserMediaError() {
console.warn("Mic input is not supported by the browser.");
}
function handleMicConnectError() {
console.warn(
"Could not connect microphone. Possible rejected by the user or is blocked by the browser."
);
}
function startUserMedia(stream) {
var options = {
useNoiseCapture: false,
activityCounterThresh: 10,
activityCounterMax: 30,
onVoiceStart: function() {
console.log("voice start");
stateContainer.innerHTML = "Voice state: <strong>active</strong>";
},
onVoiceStop: function() {
console.log("voice stop");
stateContainer.innerHTML = "Voice state: <strong>inactive</strong>";
},
onUpdate: function(val) {
valueContainer.innerHTML =
"Current voice activity value: <strong>" + val + "</strong>";
},
logger: console
};
vad(audioContext, stream, options);
}