如何使用Web Audio API减少麦克风输入的噪声?



我一直在玩Web Audio API,并使用我笔记本电脑的麦克风作为输入源。当我听输入时,我能听到很多白噪音;如何设置一个过滤器来减少噪音,使声音更清晰?是否有库为这种情况提供预先编写的噪声过滤器?

我正在用BiquadFilter处理一些POC和减少笔记本电脑的"寿命鼻子"。我也使用了压缩器,但你不必))

(function(){
    var filter, compressor, mediaStreamSource;
    // Start off by initializing a new context.
    var context = new (window.AudioContext || window.webkitAudioContext)();

    navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia;
    navigator.getUserMedia( {audio:true}, initAudio , function(err){
        console.log('usermedia error', err)
    });

    function initAudio(stream) {
        compressor = context.createDynamicsCompressor();
        compressor.threshold.value = -50;
        compressor.knee.value = 40;
        compressor.ratio.value = 12;
        compressor.reduction.value = -20;
        compressor.attack.value = 0;
        compressor.release.value = 0.25;
        filter = context.createBiquadFilter();
        filter.Q.value = 8.30;
        filter.frequency.value = 355;
        filter.gain.value = 3.0;
        filter.type = 'bandpass';
        filter.connect(compressor);

        compressor.connect(context.destination)
        filter.connect(context.destination)
        mediaStreamSource = context.createMediaStreamSource( stream );
        mediaStreamSource.connect( filter );
    }
})();

如果你听到的是嘶嘶声而不是全谱噪声,你可以尝试一种高通滤波器。我相信Web Audio API有这种类型的过滤器,你可以实现

最新更新