2013-06-05 11 views
5

Gram w gry z interfejsem API Web Audio i korzystam z mikrofonu mojego laptopa jako źródła wejściowego. Słyszę dużo białego szumu, gdy słucham wejścia; jak mogę utworzyć filtr, aby zredukować szum, aby dźwięk był wyraźniejszy? Czy istnieją jakieś biblioteki, które zapewniają wstępnie napisany filtr szumów dla tej sytuacji?Jak mogę zmniejszyć szum wejściowy mikrofonu za pomocą interfejsu Web Audio API?

+0

Nie ma czegoś takiego jak filtr magicznego szumu. Istnieje wiele sposobów wprowadzania szumów i wiele sposobów na ich usunięcie w zależności od rodzaju hałasu, z którym mamy do czynienia. Ponadto, czy chcesz filtrować tę stronę klienta szumu lub na serwerze? Po odfiltrowaniu szumu filtrowany jest również sygnał, co obniża jakość dźwięku. może wystarczy prosta bramka szumów? Jaka jest twoja aplikacja? – Brad

+0

Zdaję sobie sprawę, że nie ma "magicznego filtra", ale zakładam, że istnieją standardowe metody, które ludzie wykorzystują do budowy filtra szumów. Używam interfejsu Web Audio API, więc byłby to po stronie klienta. Może szukam bramy szumu, jak można ją stworzyć? –

+0

Nie jestem zbyt zaznajomiony z interfejsem API Web Audio, ale ogólnie rzecz biorąc, brama jest po prostu taka, że ​​żaden dźwięk nie jest przepuszczany, dopóki poziom nie osiągnie określonego progu. Chodzi o to, że kiedy nie mówisz, nie ma dźwięku. Nie słychać hałasu (lub cokolwiek), gdy poziom jest poniżej progu. Gdy znajdzie się powyżej, usłyszysz szum, ale będzie zamaskowany przez Twój głos. Inną metodą jest pobranie próbki widmowej szumu, a następnie odjęcie tego widma ze strumienia. Jest to lepsze dla określonego rodzaju szumu, na przykład wycieku z sieci 60Hz. Zmniejsza to również jakość dźwięku. – Brad

Odpowiedz

0

Możesz spróbować filtra górnoprzepustowego, jeśli słyszysz więcej szumu niż pełnego spektrum. Wierzę, że interfejs Web Audio API ma taki filtr, który można zaimplementować.

1

"m pracuje nad niektórymi POC i zredukowanymi laptopami" życiowymi nosami "z filtrem BiquadFilter. Używam również kompresora, ale nie musisz))

(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); 
    } 
})(); 
Powiązane problemy