Odpowiednie przechwytywanie dźwięku i redukcja szumów

W mojej aplikacji na Androida muszę przechwycić mowę użytkownika z mikrofonu, a następnie przekazać ją na serwer. Obecnie używamMediaRecorder klasa. Nie zaspokaja to jednak moich potrzeb, ponieważ chcę uzyskać efekt świetlistości w oparciu o bieżącą głośność dźwięku wejściowego, więc potrzebuję AudioStream lub czegoś takiego, jak sądzę. Obecnie używam następujących:

    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);

Piszę używając API poziomu 7, więc nie widzę żadnych innych AudioEncoderów, ale AMR Narrow Band. Może to jest powodem strasznego hałasu, który słyszę w moich nagraniach.

Drugim problemem, z którym się borykam, jest słaba jakość dźwięku, szum, więc chcę go zredukować (anulować, stłumić), ponieważ jest to naprawdę okropne, zwłaszcza na moim chińskim tablecie noname. Powinno to być po stronie serwera, ponieważ, o ile wiem, wymaga wielu zasobów, a nie wszystkie nowoczesne gadżety (zwłaszcza chińskie tablety noname) mogą to zrobić tak szybko, jak to możliwe. Mam swobodę wyboru, która platforma ma być używana na serwerze, więc może to być ASP.NET, PHP, JSP lub cokolwiek, co pomaga mi ulepszyć dźwięk. Mówiąc o ASP.NET, natknąłem się na bibliotekę o nazwie NAudio, która może mi w jakiś sposób pomóc. Wiem, że w bibliotece nie ma żadnego rozwiązania redukcji szumów, ale znalazłem kilka przykładów na FFT i automatycznej korelacji, więc może to pomóc.
Szczerze mówiąc, nigdy wcześniej nie pracowałem z dźwiękiem i nie mam pojęcia, od czego zacząć. Sprawdziłem wiele technik redukcji hałasu, przykładów kodu i niczego nie znalazłem. Jesteście moją ostatnią nadzieją.
Z góry dziękuję.

questionAnswers(3)

yourAnswerToTheQuestion