Анализ Android Audio в режиме реального времени

Я искал этот онлайн, но я все еще немного смущен (как я уверен, другие будут, если они подумают о чем-то подобном). Я хотел бы предисловие, сказав, что это не домашнее задание и/или прибыль.

Я хотел создать приложение, которое могло бы слушать вашу микроволновую печь, когда вы готовите попкорн. Он работал бы, сигнализируя о тревоге, когда есть определенный промежуток времени между попсами (скажем, 5-6 секунд). Опять же, это просто проект, который позволит мне заняться - не для класса.

В любом случае у меня возникают проблемы с попыткой выяснить, как анализировать потребление звука в режиме реального времени. То есть, мне нужен способ регистрации времени, когда происходит "поп". Чтобы вы, ребята, не думали, что я не занимаюсь каким-либо исследованием, я проверил этот вопрос и широко исследовал AudioRecord список функций.

Я думаю, что мне, вероятно, придется что-то сделать с одной из версий read(), а затем сравнить записанный звук каждые 2 секунды или около того для записанного звука "поп" (т.е. если 70% или более байт [] массива audioData совпадает с тем, что используется во всплывающем звуке, тогда запишите время). Может ли кто-нибудь с опытом ввода аудиовхода Android сообщить мне, если я, по крайней мере, на правильном пути? Это не вопрос, когда я хочу, чтобы вы что-то кодировали для меня, но вопрос о том, нахожусь ли я на правильном пути, а если нет, то в каком направлении я должен возглавить.

Ответ 1

Проверьте этот код (проигнорируйте часть воспроизведения): Воспроизведение звука, поступающего с микрофона в режиме реального времени

В принципе, идея состоит в том, что вам нужно будет взять значение каждого 16-битного образца (что соответствует значению волны в это время). Используя частоту дискретизации, вы можете рассчитать время между пиками в объеме. Я думаю, что это может сделать то, что вы хотите.

Ответ 2

Думаю, у меня есть более простой способ.

Вы можете использовать метод MediaRecorder getMaxAmplitude.

В любое время, когда ваш рекордер обнаруживает большой скачок амплитуды, вы обнаружили кукурузу!

Ответ 3

это может быть немного избыточным, но есть среда из медиа-лабораторий MIT, называемая funf: http://code.google.com/p/funf-open-sensing-framework/
Они уже создали классы для аудио ввода и некоторый анализ (FFT и т.п.), А также сохранение файлов или загрузки реализовано, насколько я видел, и они обрабатывают большинство датчиков, доступных на телефоне. Вы также можете получить вдохновение от кода, который они написали, что я считаю довольно хорошим.

Ответ 4

Мы опубликовали на сайте Github анализатор спектра Android с открытым исходным кодом, который вычисляет FFT на аудио с микрофона и отображает 2D-спектрограмму.

Вы можете просмотреть видеоролик об этом на https://youtu.be/yU05fsgOYO4

enter image description here

Критический код для считывания микрофона и вычисления спектров звука находится на v2.x/... sciShowcase/Viewmodels/AudioAnalyzer