Увеличьте объем записи Android AudioRecord

Я использую AudioRecord и lame для записи микрофонного ввода в mp3-образец в течение 12 секунд. Звук является рекордером, как ожидалось, но я понял, что громкость слишком низкая.

Есть ли способ увеличить громкость записи?

Ответ 1

В классе audioRecord нет настроек усиления, поэтому вы не можете контролировать громкость записываемого звука. Низкая громкость звука связана с оборудованием и варьируется от устройства к устройству. Вот несколько вариантов, которые вы можете попробовать.

1) попробуйте открыть аудиозапись в разных режимах и посмотреть, что работает лучше всего. check - http://developer.android.com/reference/android/media/MediaRecorder.AudioSource.html

2) в аудиозаписке вы получаете необработанные буферы PCM. Вы можете написать простой код/​​функцию для смещения бит (8/16 бит на канал) влево или вправо, чтобы удвоить или уменьшить вдвое коэффициент усиления. (Подумайте об этом как о очень грубом регулировании громкости)

3) попробуйте выполнить поиск в сети для более сложных методов цифрового усиления для более плавного управления. Существует много реализаций. (Есть и собственные методы)

Check: Как настроить чувствительность микрофона во время записи звука в андроиде

Ответ 2

Вы также можете просто увеличить громкость устройства:

AudioManager am = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE);

int previousVolume = am.getStreamVolume(AudioManager.STREAM_MUSIC);
am.setStreamVolume(AudioManager.STREAM_MUSIC, 10, 0);

{... do your things ... } 

am.setStreamVolume(AudioManager.STREAM_MUSIC, previousVolume, 0);

В моем случае это было легко исправить, и оно работало с остальной частью приложения.