Подтвердить что ты не робот

Обнаружение шума ветра

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

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

Это мой план сначала, но мне нужно узнать, как это делается. Уже есть какой-то открытый проект? Или есть кто-то, кто занимается исследованиями по этим темам?

Причина, по которой я пишу на этом форуме, состоит в том, что я не знаю, как это сделать, что я нашел, я не искал. Я действительно не знаю, как начать разработку такого алгоритма.

РЕДАКТИРОВАТЬ 1:
Я пытался записать ветер, и когда я открываю сохраненный аудиофайл для меня, это всего лишь куча чисел:). Я даже не вижу, в каком формате я должен сохранить это, достаточно ли волны? Должен ли я использовать что-то еще, или что, если я конвертирую звуковой файл шума ветра в mp3: это поможет с разбором?

Ну, у меня много вопросов, потому что я не знаю, откуда больше узнать об этой теме. Я отмечаю свой вопрос с помощью указателей, поэтому я надеюсь, что кто-то поможет мне.

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

4b9b3361

Ответ 1

Наука для вашей проблемы называется "классификация шаблонов", особенно подполе "классификация звуковых паттернов". Задача абстрагируется как классификация звукозаписи на два класса (ветер, а не ветер). У вас, похоже, нет сильного фона в обработке сигналов, поэтому позвольте мне вставить одно центральное предупреждение: Классификация шаблонов не так проста, как кажется на первый взгляд. Люди преуспевают в классификации образцов. Компьютеры не делают.

Хорошим первым подходом часто является вычисление корреляции преобразования Фурье вашего сигнала и выборки. Не знаю, насколько это будет зависеть от скорости ветра.

Возможно, вы захотите взглянуть на подход bag-of-frames, он был успешно использован для классификации окружающего шума.

Ответ 2

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

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

Код С++/C здесь, если он кому-то полезен!

Ответ 3

Как упоминалось выше, это пример классификации звуковых паттернов.

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

Вы должны проверить спектральный контент и изменить в wavefile, так что вам понадобится FFT. Формат ввода не имеет особого значения, но, очевидно, исходный материал (wav) лучше.

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

Ответ 4

На самом деле это трудная проблема.

Предполагая, что у вас есть только одна информация о микрофоне. Необработанные данные, которые вы получаете при открытии аудиофайла (сигнал во временной области), имеют некоторые, но не очень много информации для такого вида обработки. Вам нужно зайти в частотную область, используя БПФ, и посмотреть статистику ячеек частоты и использовать ее для создания классификатора с использованием SVM или Random Forests.

При всем уважении к @Karoly-Horvath, я бы также не использовал записи, которые претерпели сжатие, например, mp3. Алгоритмы сжатия звука всегда искажают более высокие частоты, что, как выясняется, является важной особенностью при обнаружении ветра. Если возможно, получите необработанные данные PCM от микрофона. Вам также необходимо убедиться, что ваша запись выбрана не менее 24 кГц, поэтому у вас есть информация о сигнале до 12 кГц.

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

Если у вас есть 2 микрофонных данных, то это становится немного проще. Ветер, когда он записан, является локальным явлением. Конечно, в записях вы слышите шелест листьев или звук курантов, вызванных ветром. Но это не шум ветра, и его нельзя отфильтровывать.

Настоящий раздражающий шум ветра, который вы слышите в записи, - это воздух, поражающий мембрану вашего микрофона. Этот эффект является локальным событием - и его можно использовать, если у вас есть 2 микрофона. Его можно использовать, поскольку событие локально для каждого отдельного микрофона и не коррелирует с другим микрофоном. Разумеется, здесь также важны два микрофона в отношениях друг с другом. Они должны быть достаточно близки друг к другу (скажем, в пределах 8 дюймов).

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

Я надеюсь, что этот обзор поможет.