hanaa
hanaa

Reputation: 405

noise removal in AudioRecorder

i used AudioRecorder to record a chirp signal of 50 milliseconds (10-12KHz frequency). In a calm room, at a distance of 50/60 cm, the signal spectrogram looks like this

enter image description here

Lots of noise in the background, and some echos. I want to know if there's a way to reduce noise in background using Android?

EDIT

i tried Android NoiseSuppressor but it says my device does not support this feature, though i have a 4.4 Android phone (Nexus 4)

the cross correlation output : enter image description here

Upvotes: 1

Views: 1326

Answers (1)

ederwander
ederwander

Reputation: 3478

to remove noise you can try build a denoise algorithm, the main steps are:

  1. Choose your frame size (2048 is nice)
  2. Choose your overlap/hop size (256, 512, 1024)
  3. Choose Denoise thresholds( 1, 50, 100, etc)
  4. Build a raised cosine window (Hann window)
  5. Apply Window in your frame
  6. Shift zero frequencies to center of spectrum (Circular Shift)
  7. apply FFT
  8. Get the Magnitude
  9. Apply denoise denoised=(FFT * (magnitude / (magnitude+sqrt(denoise_threshold)))
  10. Back your signal to time domain Tdomain=real(ifft(denoised))
  11. Shift zero frequencies to center of spectrum
  12. Apply Window
  13. Apply Overlap and add

Upvotes: 2

Related Questions