Android Audio Analysis в режиме реального времени - PullRequest
10 голосов
/ 13 сентября 2011

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

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

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

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

Ответы [ 4 ]

8 голосов
/ 05 октября 2011

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

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

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

5 голосов
/ 14 сентября 2011

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

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

4 голосов
/ 27 мая 2013

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

2 голосов
/ 21 апреля 2017

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

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

enter image description here

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

...