Как можно проверить уровни входа микрофона в электронном режиме? - PullRequest
0 голосов
/ 16 марта 2019

Я пытаюсь разработать настольное приложение с электронным управлением.

Я выполняю задачу, связанную с проверкой уровня входного сигнала микрофона и включением функции, когда уровень входного сигнала превышает определенный.

Я нашел несколько репозиториев Github, однако большинству из них требуется другое аудио программное обеспечение, такое как alsa (Linux).

Так что сейчас API Web Audio кажется правильным способом, но я не вижу связанных документовили примеры по этому поводу.

Если это возможно, может кто-нибудь показать мне пример с Web Audio API?или просто идеи тоже могут быть полезны.

Если есть другой способ, кроме Web Audio API, это тоже было бы здорово.

1 Ответ

0 голосов
/ 17 марта 2019

Я понял это с помощью анализатора Web Audio API!

var constraints = {audio: true};
var stream = null;

navigator.mediaDevices.getUserMedia(constraints).then(function(mediaStream){
  callbStream(mediaStream);
}).catch(function(err) { console.log(err.name + ": " + err.message); });

function callbStream(mediaStream){
  stream = mediaStream;
}

function getStreamData() {
  if(stream != null){
    var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
    var source = audioCtx.createMediaStreamSource(stream);
    var analyser = audioCtx.createAnalyser();
    source.connect(analyser);
    analyser.fftSize = 32;
    var dataArray = new Uint8Array(analyser.fftSize);
    setTimeout(function(){
      analyser.getByteTimeDomainData(dataArray);
      console.log('V:' + dataArray[0] / 128.0);
    }, 1000);
  }
}

var animClock = setInterval(getStreamData, 1000);
...