2013-06-05 14 views
5

Ho giocato con l'API Web Audio e ho utilizzato il microfono del mio laptop come sorgente di input. Posso sentire un sacco di rumore bianco quando ascolto l'input; come posso creare un filtro per ridurre il rumore in modo che il suono sia più chiaro? Esistono librerie che forniscono un filtro antidisturbo pre-scritto per questa situazione?Come posso ridurre il rumore di un ingresso microfono con l'API Web Audio?

+0

Non esiste un filtro del rumore magico. Ci sono molti modi in cui viene introdotto il rumore e molti modi per rimuoverlo a seconda del tipo di rumore che stai affrontando. Inoltre, stai cercando di filtrare questo rumore lato client o su un server? Quando si filtra il rumore, si filtra anche il segnale, riducendo la qualità dell'audio. forse un semplice noise gate è tutto ciò di cui hai bisogno? Qual è la tua applicazione? – Brad

+0

Mi rendo conto che non esiste un "filtro magico", ma presumo che esistano metodi standard che le persone usano per costruire un filtro rumore. Sto usando l'API Web Audio, quindi questo sarebbe sul lato client. Forse un noise gate è quello che sto cercando, come si fa a crearne uno? –

+0

Non ho molta familiarità con l'API Web Audio, ma in generale, un gate è solo che nessun audio viene lasciato passare finché il livello non raggiunge una certa soglia. L'idea è che quando non stai parlando, nessun audio passa attraverso. Non si sente il rumore (o altro) quando il livello è al di sotto della soglia. Quando è sopra, sentirai il rumore ma sarà mascherato dalla tua voce. Un altro metodo consiste nel prendere un campione spettrale del rumore e quindi sottrarre quello spettro dal flusso. Questo è meglio per un tipo specifico di rumore, come il 60hz che perde. Riduce anche la qualità dell'audio. – Brad

risposta

0

Si potrebbe provare un tipo di filtro passa-alto se ciò che si sente è più un sibilo che un rumore a spettro completo. Credo che l'API Web Audio abbia quel tipo di filtro che potresti implementare.

1

"Sto lavorando su alcuni POC e computer portatile ridotto" nasi vitali "con un BiquadFilter. Ho anche utilizzato un compressore ma non è necessario))

(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); 
    } 
})(); 
Problemi correlati