使用网络音频记录来自麦克风的低音量输入 API

Record Low Volume Input from Microphone using Web Audio API

我正在尝试弄清楚如何使用网络音频 API 来记录来自麦克风的低音量输入。所以基本上我希望以从 0Hz 到 100Hz 左右的低频或分贝进行记录。

如有任何帮助,我们将不胜感激。谢谢

这就是我到目前为止所得到的:

if (!navigator.getUserMedia) {
        navigator.getUserMedia = navigator.webkitGetUserMedia ||
            navigator.mozGetUserMedia;
    }
    navigator.getUserMedia({
        audio: true
    }, function(stream) {
        var ctx = new AudioContext();
        var source = ctx.createMediaStreamSource(stream);
        var gainNode = ctx.createGain();

        source.connect(gainNode);
        gainNode.connect(ctx.destination);
        document.getElementById('volume').onchange = function() {
            gainNode.gain.value = this.value;
        };

        gainNode.gain.value = document.getElementById('volume').value;

        new Audio().play();

    }, function(e) {
        alert(e);
});

    // For the demo only:
    document.getElementById('volume').onchange = function() {
        alert('Please provide access to the microhone before using this.');
    }

这是HTML控件:

Volume: <input type=range id=volume min=0 max=100 value=50 step=0.01/>

据我所知,我使用这段代码所做的只是降低麦克风的输出音量。

正如我所说,我正在尝试捕获从 0Hz 到 100Hz 的低音量输入。

如果您只想记录 0 到 100 Hz 之间的频率,请使用一个或多个 BiquadFilterNodes or an IIRFilterNode 来实现截止频率为 100 Hz 左右的低通滤波器。

一般来说,您可以自行选择合适的过滤器,但 filter design page 或许会对您有所帮助。使用风险自负!