验证电子中麦克风输入电平的方法是什么?

时间:2019-03-16 09:53:14

标签: javascript node.js electron web-audio-api

我正在尝试开发电子桌面应用程序。

我正在执行必须检查麦克风输入电平并在输入电平超过一定水平时运行该功能的任务。

我已经找到了一些Github存储库,但是其中大多数都需要其他音频软件,例如alsa(Linux)。

因此,目前,Web Audio API似乎是正确的选择,但我看不到任何相关文档或示例。

如果可以的话,有人可以通过Web Audio API向我展示示例吗? 或者只是想法也会有所帮助。

如果除了Web Audio API之外还有其他方法也很好。

1 个答案:

答案 0 :(得分:0)

我通过使用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);