Как улучшить качество записи голоса для Android - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть следующий код для записи аудио / голоса в 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 ]

0 голосов
/ 05 сентября 2018

Вы должны увеличить свой 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);
0 голосов
/ 05 сентября 2018

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

Также взгляните на этот ответ для получения дополнительной справки: https://stackoverflow.com/a/14973295/5457878

...