2015-12-07 3 views
0

Я пытаюсь создать систему на rasp pi, которая может обнаружить громкий внезапный звук, похожий на хлопок. Я могу захватить входные звуковые образцы в реальном времени (используя простую программу python), но вам нужен эффективный способ запускать мой алгоритм в этих онлайн-образцах, чтобы указать всплеск. Я не слишком хорошо знаком с фильтрами, которые используются для таких приложений. Какие-либо предложения?Обнаружение громкого импульсного звука

+1

могли бы вы взять скользящее среднее среднеквадратичных значений и, если на входе выше определенного порога от того, что значение будет рассматриваться как «всплеск»? – adanot

+0

Я собираюсь использовать круговой буфер для сбора входов – Electrix

+0

@adanot Пороговое значение является непостоянным, поэтому всплеск относится только к его прошлым и будущим образцам. Тем не менее ваша идея имеет смысл, в самой тривиальной реализации, можно посмотреть образец SecondBeforeLast, Last и Current, а если Last> Current && Last> SecondBeforeLast, это можно считать всплеском. Я думаю, что это ошибка, подверженная ошибкам выборки, и мы можем постоянно пропустить шипы. – Electrix

ответ

1
  1. применять верхний предел выше 1 кГц, кажется, работает достаточно хорошо. Хлап должен содержать преимущественно высокочастотные компоненты.
  2. вычислить среднеквадратическое значение, например. квадратный выход верхнего предела, в среднем это за последние 100 выборок, чтобы сгладить
  3. нормализовать в течение некоторого временного окна, например. последние N выборок. Убедитесь, что вы сделали это окно длиннее своего скользящего среднего для среднеквадратичного значения. Для вашего текущего образца вычтите среднее значение этого буфера и разделите его на стандартное отклонение в буфере. Таким образом вы обнаружите относительные изменения отношения сигнал/шум в вашем окне, которые не зависят от текущей амплитуды.
  4. Выберите порог SNR, чтобы объявить хлопок
Смежные вопросы