Я борюсь с тех пор, как несколько дней пытался получить сырой аудиопоток с микрофона. Я пробую разные способы: низкоуровневый способ JNI с библиотекой Oboe (реализации AAudio и OpenSL ES) и классы AndroidRecord Java.
Проблема, с которой я сталкиваюсь, заключается в том, что я не могу извлекайте амплитуды около - / + 1,0, будучи уверенными в насыщении входа микрофона калиброванным чистым тоном с такой высокой амплитудой. Я думаю, что проблема в том, что я не могу эффективно отключить предварительную обработку сигнала из AndroidOS (Automati c Gain Control или Noise Cancelling).
AutomaticGainControl.create(id).setEnabled(false)
(не работает!)
Кроме того, кажется, что также невозможно отключить любой дополнительный микрофон, а не «выбранный» (это делается при выборе экземпляра setPreferredDevice
на AudioRecord
). Используется в качестве источника звука: необработанный, mi c, voice_recognition.
Есть ли что-либо, делающее это, или я что-то упустил?
Спасибо