Я хочу записывать человеческий голос на свой телефон Android. Я заметил, что в Android есть два класса для этого: AudioRecord и MediaRecorder . Может ли кто-нибудь сказать мне, в чем разница между ними и каковы подходящие варианты использования для каждого?
Я хочу иметь возможность анализировать человеческую речь в режиме реального времени для измерения амплитуды и т.д. Правильно ли я понимаю, что AudioRecord лучше подходит для этой задачи?
Я заметил на официальной странице руководства Android по записи звука , они используют MediaRecorder без упоминания AudioRecord.
источник
Насколько я понимаю
MediaRecorder
, это черный ящик, который дает сжатый аудиофайл на выходе иAudioRecorder
дает вам только необработанный звуковой поток, и вы должны сжимать его самостоятельно.MediaRecorder
дает вам максимальную амплитуду от последнего вызоваgetMaxAmplitude()
метода, поэтому вы можете, например, реализовать звуковой визуализатор.Так что в большинстве случаев
MediaRecorder
это лучший выбор, за исключением тех, в которых вам нужно выполнить сложную обработку звука и вам нужен доступ к необработанному аудиопотоку.источник
AudioRecorderer сначала сохраняет данные в minBuffer, затем они копируются оттуда во временный буфер, а в MediaRecorder они копируются в файлы. В AudioRecorder нам нужен api setRecordPosition () для копирования сохраненных данных в требуемую позицию, тогда как в MediaRecorder указатель файла выполняет эту работу, чтобы установить положение маркера. AudioRecorder можно использовать для тех приложений, которые работают на эмуляторе, это можно сделать, предоставив низкую частоту дискретизации, например 8000, при использовании MediaRecorder звук не может быть записан с помощью эмулятора. В AudioRecord через некоторое время экран спит, а в MediaRecorder экран не спит.
источник