Как улучшить качество записи голоса для Android

У меня есть следующий код для записи аудио / голоса в Android:

MediaRecorder recorder=new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setAudioEncodingBitRate(16);
recorder.setAudioSamplingRate(44100);
recorder.setOutputFile(Environment.getExternalStorageDirectory() + File.separator
                    + Environment.DIRECTORY_DCIM + File.separator + "WAVES.amr");

try {
       recorder.prepare();
       recorder.start();
} catch (IOException e) {
       Toast.makeText(topic_player_list_layout.this,"Unable to record",Toast.LENGTH_SHORT).show();
       return;
            }


Вопрос в том, что качество записанного аудиофайла не очень хорошее по сравнению с приложением для записи голоса Android по умолчанию или whatsApp/Telegram voice recorder,

Что ты предлагаешь? Что я могу сделать, чтобы улучшить качество записанных голосов?

2 ответа

Решение

Вы должны увеличить свой audioEncodingBitRate

MediaRecorder recorder=new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setAudioEncodingBitRate(128000);
recorder.setAudioSamplingRate(44100);

Если мы посмотрим на документацию: https://developer.android.com/reference/android/media/MediaRecorder.OutputFormat, то увидим, что доступно множество аудиоформатов. Ты используешь THREE_GPP который не доставляет лучшего качества, насколько я знаю. Я хотел бы рассмотреть возможность использования MPEG_4 вместо. Также попробуйте использовать AAC вместо AMR в качестве аудио кодера.

Также посмотрите на этот ответ для получения дополнительной ссылки: /questions/21449208/kak-zapisat-audio-fajl-s-luchshim-kachestvom-v-android/21449217#21449217

Другие вопросы по тегам