c онлайн - Учитывая аудиопоток, найдите, когда дверь хлопает(расчет уровня звукового давления?)





шума помещении (9)


В радарном мире есть много соответствующей литературы по этой проблеме (она называется теорией обнаружения).

Вы можете взглянуть на детектирование «CFA» (постоянная ложная тревога). Википедия здесь немного. Ваша идея очень похожа на это, и она должна работать! :)

Удачи!

В отличие от детектора хлопка («Clap on! Clap clap Clap off! Clap clap Clap on, clap off, clapper! Clap clap ») Мне нужно обнаружить, когда дверь закрывается. Это находится в транспортном средстве, которое легче, чем комната или бытовая дверь:

Слушайте: http://ubasics.com/so/van_driver_door_closing.wav

Посмотрите:

Это выборка на 16 бит 4 кГц, и я бы хотел избежать много обработки или хранения образцов.

Когда вы смотрите на него в духе или другом инструменте осциллограммы, это довольно отчетливо и почти всегда заклинивается из-за увеличения звукового давления в автомобиле - даже когда окна и другие двери открыты:

Слушайте: http://ubasics.com/so/van_driverdoorclosing_slidingdoorsopen_windowsopen_engineon.wav

Посмотрите:

Я ожидаю, что существует относительно простой алгоритм, который будет принимать показания на частоте 4 кГц, 8 бит и отслеживать «устойчивое состояние». Когда алгоритм обнаруживает значительное увеличение уровня звука, он будет отмечать пятно.

  • Что ты думаешь?
  • Как бы вы обнаружили это событие?
  • Существуют ли примеры кода для расчета уровня звукового давления, которые могут помочь?
  • Могу ли я уйти с менее частым отбором (1 кГц или даже медленнее?)

Обновление: игра с Octave (численный анализ с открытым исходным кодом - аналогичный Matlab) и просмотр, если средний квадрат корня даст мне то, что мне нужно (что приводит к чему-то очень похожему на SPL)

Update2: Вычисление RMS обнаруживает, что дверь легко закрывается в простом случае:

Теперь мне просто нужно посмотреть на сложные случаи (радио, высокая температура / воздух и т. Д.). CFAR выглядит действительно интересно - я знаю, что мне придется использовать адаптивный алгоритм, и CFAR, безусловно, соответствует законопроекту.

-Адам




Я бы предположил, что частота и амплитуда также будут значительно отличаться от транспортного средства к транспортному средству. Лучший способ определить, что будет брать образец в Civic против большого внедорожника. Возможно, вы можете заставить пользователя закрыть дверь в режиме обучения, чтобы получить амплитудную и частотную сигнатуру. Затем вы можете использовать это для сравнения в режиме использования.

Вы также можете рассмотреть возможность использования анализа Фурье для устранения фоновых шумов, которые не связаны с закрытием двери.




Процесс обнаружения различного шипа в аудиосигналах называется временным обнаружением . Приложения, такие как Sony Acid и Ableton Live, используют детектор переходных процессов, чтобы найти удары в музыке для выполнения биения.

Четкий всплеск, который вы видите в форме волны выше, называется переходным, и есть несколько хороших алгоритмов для его обнаружения. В статье «Определение и классификация переходных процессов в энергетических вопросах» описаны 3 метода для этого.




Очень простая шумовая завеса, вероятно, будет очень хорошо в вашей ситуации. Просто дождитесь появления первого образца, амплитуда которого превышает заданное пороговое значение (чтобы избежать срабатывания фонового шума). Вам нужно будет только усложниться, если вам нужно различать различные типы шумов (например, закрытие двери по сравнению с ручным хлопанием).




Я начну с рассмотрения спектра. Я сделал это на двух аудиофайлах, которые вы дали, и, похоже, есть какое-то сходство, которое вы могли бы использовать. Например, основное различие между ними, по-видимому, составляет около 40-50 Гц. Мой .02.

ОБНОВИТЬ

У меня была другая идея после публикации этого. Если можно, добавьте акселерометр на устройство. Затем коррелируют колебательные и акустические сигналы . Это должно помочь в обнаружении перекрестного автомобиля. Я думаю, что это должно быть хорошо коррелировано, поскольку звук вибрационно управляется, если стерео, например, нет. У меня было устройство, способное обнаруживать обороты двигателя с помощью лобового стекла (присоски), поэтому чувствительность может быть там. (Я не обещаю, что это работает!)

alt text http://www.charlesrcook.com/spectral.jpg

%% Test Script (Matlab)
clear
hold all %keep plots open
dt=.001

%% Van driver door
data = wavread('van_driver_door_closing.wav');

%Frequency analysis
NFFT = 2^nextpow2(length(data));
Y = fft(data(:,2), NFFT)/length(data);
freq = (1/dt)/2*linspace(0,1,NFFT/2);
spectral = [freq'  2*abs(Y(1:NFFT/2))];

plot(spectral(:,1),spectral(:,2))

%% Repeat for van sliding door
data = wavread('van_driverdoorclosing.wav');

%Frequency analysis
NFFT = 2^nextpow2(length(data));
Y = fft(data(:,2), NFFT)/length(data);
freq = (1/dt)/2*linspace(0,1,NFFT/2);
spectral = [freq'  2*abs(Y(1:NFFT/2))];

plot(spectral(:,1),spectral(:,2))



Вы должны нажать на дверные замки в автомобиле. Попытка сделать это со звуковым анализом - это чрезмерный аудит.

Есть много предложений относительно разных подходов к обработке сигналов, но на самом деле, к тому времени, когда вы узнаете о теории обнаружения, постройте встроенную плату обработки сигналов, изучите архитектуру обработки выбранного вами микросхемы, попробуйте алгоритм, отлаживаете его, и затем настройте его для автомобиля, на котором вы хотите его использовать (а затем повторно настройте и повторно отлаживайте его для каждого другого автомобиля), вы захотите, чтобы вы просто вставляли кассету с герконом в автомобиль и нагревали магнит до дверь.

Не то, чтобы это не было проблемой для экспертов dsp, но из-за того, что вы задаете этот вопрос, ясно, что обработка звука - это не тот маршрут, который вы хотите принять. Это будет просто такой кошмар, чтобы он работал правильно.

Кроме того, clapper представляет собой только фильтр высоких частот, подаваемый в пороговый детектор. (плюс таймер, чтобы убедиться, что 2 claps достаточно быстро вместе)




Что касается менее частых выборок, то самая высокая частота звука, которая может быть захвачена, составляет половину частоты дискретизации. Таким образом, если звук автомобильной двери был самым сильным на частоте 1000 Гц (например), тогда частота дискретизации ниже 2000 Гц полностью потеряла бы этот звук




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




Все предыдущие ответы верны, если вы хотите получить технически точный или научно обоснованный ответ. Но если вам просто нужна общая оценка сравнительной громкости, например, если вы хотите проверить, лает собака или плачет ребенок, и вы хотите указать порог в дБ, то это относительно простой расчет.

Многие редакторы волновых файлов имеют вертикальную шкалу в децибелах. Калибровочных или контрольных измерений нет, просто расчет:

dB = 20 * log10(amplitude)

Амплитуда в этом случае выражается как число от 0 до 1, где 1 представляет максимальную амплитуду в звуковом файле. Например, если у вас есть 16-битный звуковой файл, амплитуда может достигать 32767. Таким образом, вы просто разделите образец на 32767. (Мы работаем только с абсолютными значениями, только с положительными номерами.) Итак, если у вас есть волна, которая достигает максимума при 14731, тогда:

amplitude = 14731 / 32767
          = 0.44

dB = 20 * log10(0.44)
   = -7.13


Но есть очень важные вещи, которые следует учитывать, в частности ответы, данные другими.

1) Как говорит Йорг W Миттаг, дБ является относительным измерением. Поскольку у нас нет калибровок и ссылок, это измерение относится только к самому себе. И под этим я имею в виду, что вы сможете увидеть, что звук в звуковом файле на данный момент на 3 дБ громче, чем в тот момент, или что этот всплеск на 5 децибел громче фона. Но вы не можете знать, насколько это громко в реальной жизни, не без калибровки, о которых говорят другие.

2) Это также упоминалось PaulR и user545125: поскольку вы оцениваете по записанному звуку, вы измеряете только звук в определенном месте, где находится микрофон, смещены в направлении, на котором указывает микрофон, и фильтруются с помощью частотная характеристика вашего оборудования. В нескольких шагах от человека, слушающего человеческие уши, вы получите совершенно другой уровень звука и разные частоты.

3) Без откалиброванного оборудования вы не можете сказать, что звук составляет 60 дБ или 89 дБ или что-то еще. Все, что может дать вам этот расчет, - это то, как пики в звуковом файле сравниваются с другими пиками в одном звуковом файле.

Если это все, что вам нужно, тогда все в порядке, но если вы хотите сделать что-то серьезное, например, определить, безопасен ли уровень шума на заводе для рабочих, тогда слушайте Paul, user545125 и Jörg.





c algorithm audio signal-processing