使用麦克风时静音输出声音 - Audio Web API

Muting sound output when using Mic - Audio Web API

我创建了一个 canvas 可视化效果,可以响应通过设备麦克风录制的声音。
一切都很好,但是麦克风拾取的所有声音都通过扬声器播放,我得到了可怕的反馈。

我试过设置 gainNode to 0,但没用。
我知道我遗漏了什么,但我想不通。

这是我的代码。

let getSound = (stream) => {
    const audioCtx = new AudioContext();

    gainNode = audioCtx.createGain();
            
    mic = audioCtx.createMediaStreamSource(stream);
    mic.connect(gainNode);
    gainNode.gain.value = 0;

    analyser = audioCtx.createAnalyser();
    analyser.fftSize = 512;
    const bufferLength = analyser.frequencyBinCount;
    const dataArray = new Uint8Array(bufferLength);
    analyser.getByteTimeDomainData(dataArray);
    mic.connect(analyser);
            
    analyser.connect(audioCtx.destination);
    gainNode.connect(audioCtx.destination);
}

您制作的图表如下所示:

mic > gainNode > destination
mic > analyser > destination

如果你想用 gainNode 调平信号,你可以链接所有节点以得到这样的图表:

mic > analyser > gainNode > destination

但是正如您已经提到的,如果您只是对数据感兴趣,则分析器不必连接到目的地。因此下图应该有效:

mic > analyser