扬声器中的麦克风静音,但仍然可以使用Web Audio Api进行分析(createAnalyser)?

时间:2015-12-27 17:01:23

标签: javascript web-audio microphone analyzer mute

我尝试创建一个Analyzer节点以从麦克风获取信号,并能够使用接收到的输入创建图形。但我不想让扬声器仍然重新接收麦克风信号。

来源(麦克风) - >分析仪 - >目的地(

目的地始终是扬声器...我可以将目的地放到空白处或类似地方,并且仍能分析麦克风吗?

我尝试使用Volumne(增益节点),但最终会影响分析仪。

总结:我需要能够分析来自麦克风的输入,但将扬声器上的信号静音。

编辑:这就是我正在做的事情。

analyser = context.createAnalyser();
analyser.smoothingTimeConstant = 0.4;
analyser.fftSize = 64;

microphone.connect(analyser)
analyser.connect(context.destination);

这很好用......但是我在扬声器上听到了声音。 如果我问一个例子:

var data = new Uint8Array(analyzer.frequencyBinCount);
analyzer.getByteFrequencyData(data)

然后数据将包含来自麦克风的响应。

但如果我像这样增加收益

volume.gain.value = 0; 
microphone.connect(analyser)
analyser.connect(volume);
volume.connect(context.destination);

或者我没有连接 context.destination ,那么数据数组将全部为0(不响应麦克风)

2 个答案:

答案 0 :(得分:2)

在分析器节点之后添加一个增益节点,并将其值设置为0.所以..

var volume = context.createGain();
volume.gain.value = 0;

microphone.connect(analyser);
analyser.connect(volume);
volume.connect(context.destination);

答案 1 :(得分:2)

实际上,您甚至不需要连接分析仪。它应该在没有连接到目的地的情况下进行处理。