title: Appropriate audio capture and noise reduction
body: <p>In my android application I need to capture the user's speech from the microphone and then pass it to the server. Currently, I use the <code>MediaRecorder</code> class. However, it doesn't satisfy my needs, because I want to make glowing effect, based on the current volume of input sound, so I need an AudioStream, or something like that, I guess.  Currently, I use the following:</p>
  
  <pre><code>    this.recorder = new MediaRecorder();
      this.recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
      this.recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
      this.recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
      this.recorder.setOutputFile(FILENAME);
  </code></pre>
  
  <p>I am writing using API level 7, so I don't see any other AudioEncoders, but AMR Narrow Band. Maybe that's the reason of awful noise which I hear in my recordings.  </p>
  
  <p>The second problem I am facing is poor sound quality, noise, so I want to reduct (cancel, suppress) it, because it is really awful, especially on my noname chinese tablet. This should be server-side, because, as far as I know, requiers a lot of resources, and not all of the modern gadgets (especially noname chinese tablets) can do that as fast as possible. I am free to choose, which platform to use on the server, so it can be ASP.NET, PHP, JSP, or whatever helps me to make the sound better. Speaking about ASP.NET, I have come across a library, called NAudio, may be it can help me in some way. I know, that there is no any noise reduction solution built in the library, but I have found some examples on FFT and auto-corellation using it, so it may help.<br>
   To be honest, I have never worked with sound this close before and I have no idea where to start. I have googled a lot about noise reduction techniques, code examples and found nothing. You guys are my last hope.<br>
  Thanks in advance.</p>