Я использую AudioRecord и lame для записи микрофонного ввода в mp3-образец в течение 12 секунд. Звук является рекордером, как ожидалось, но я понял, что громкость слишком низкая.
Есть ли способ увеличить громкость записи?
Я использую AudioRecord и lame для записи микрофонного ввода в mp3-образец в течение 12 секунд. Звук является рекордером, как ожидалось, но я понял, что громкость слишком низкая.
Есть ли способ увеличить громкость записи?
В классе audioRecord
нет настроек усиления, поэтому вы не можете контролировать громкость записываемого звука. Низкая громкость звука связана с оборудованием и варьируется от устройства к устройству. Вот несколько вариантов, которые вы можете попробовать.
1) попробуйте открыть аудиозапись в разных режимах и посмотреть, что работает лучше всего. check - http://developer.android.com/reference/android/media/MediaRecorder.AudioSource.html
2) в аудиозаписке вы получаете необработанные буферы PCM. Вы можете написать простой код/функцию для смещения бит (8/16 бит на канал) влево или вправо, чтобы удвоить или уменьшить вдвое коэффициент усиления. (Подумайте об этом как о очень грубом регулировании громкости)
3) попробуйте выполнить поиск в сети для более сложных методов цифрового усиления для более плавного управления. Существует много реализаций. (Есть и собственные методы)
Check: Как настроить чувствительность микрофона во время записи звука в андроиде
Вы также можете просто увеличить громкость устройства:
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);
В моем случае это было легко исправить, и оно работало с остальной частью приложения.