In my Android application, I need to record user speech from a microphone, and then transfer it to the server. I am currently using the MediaRecorder class. However, this does not satisfy my needs, because I want to make a glowing effect based on the current volume of the input sound, so I need an AudioStream or something like that, I think. I am currently using the following:
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);
I write using API level 7, so I don't see any other AudioEncoders, but the AMR Narrow Band. Perhaps this is the reason for the terrible noise that I hear in my recordings.
The second problem I encountered is poor sound quality, noise, so I want to cancel it (cancel, suppress), because it is really terrible, especially on my non-American Chinese tablet. This should be on the server side, because, as far as I know, requiers have a lot of resources, and not all modern gadgets (especially noname Chinese tablets) can do this as quickly as possible. I am free to choose which platform to use on the server, so it can be ASP.NET, PHP, JSP or something else that helps me improve the sound. Speaking of ASP.NET, I came across a library called NAudio, maybe this can help me in some way. I know that there is no noise reduction solution in the library, but I have found some examples of using FFT and autocorrelation, so this can help.
Honestly, I have never worked with sound before, and I donβt know where to start. I knew a lot about noise reduction methods, code examples, and found nothing. You guys are my last hope. Thanks in advance.