Как определить каждый компонент аудиосигнала?

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

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

У кого-нибудь есть хорошая идея? Хотите порекомендовать какую-нибудь работу / бумагу по теме?


person WWH98932    schedule 10.06.2019    source источник
comment
Можете ли вы предоставить спектрограмму нескольких оборотов, в идеале с отмеченным временем, когда каждое лезвие прошло?   -  person Jon Nordby    schedule 27.12.2019


Ответы (2)


Что ж...

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

Однако, если турбина имеет 3 идеальных лопасти, то она будет иметь одну и ту же конфигурацию 3 раза за каждое вращение, поэтому весь звук, производимый вращением, должен быть ограничен частотой, кратной 60 Гц.

Энергия других гармоник 20 Гц - 20, 40, 80, 100 и т. Д., Которая выше минимального уровня шума, обычно является результатом различий между лопастями.

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

person Matt Timmermans    schedule 11.06.2019

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

1) Оцените положение каждого лезвия и извлеките звук для каждого лезвия.

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

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

Чтобы обнаружить различия между лезвиями, вы можете попробовать использовать стандартную функцию расстояния в стандартном описании функции, например Евклидово в MFCC. Вам все равно понадобится несколько образцов как для известных ошибочных примеров, так и для известных хороших / приемлемых примеров, чтобы оценить ваше решение. Однако есть риск, что этого будет недостаточно. Затем попробуйте вычислить некоторые более точные характеристики в качестве основы для вычисления расстояния. Возможно, используя AutoEncoder. Вы также можете попробовать что-то вроде изучения сходства. Если у вас есть большое количество как хороших, так и ошибочных данных, вы можете использовать настройку тройной потери, чтобы узнать метрику сходства. Подайте данные для двух хороших лезвий как объекты, которые должны быть похожи, а заведомо плохие как объекты, которые должны быть непохожими.

person Jon Nordby    schedule 26.12.2019
comment
Спасибо, со временем разобрался. Сначала я нашел способ извлечь функцию, которая представляет энергию исходного сигнала из матрицы STFT, она выглядит как периодический сигнал с пиками и впадинами, поэтому, если вы можете найти положения всех реальных впадин, индексы будут быть вашей сегментацией. В этом могут помочь некоторые алгоритмы поиска пиков. После получения сигнала от каждого лезвия все, что мне нужно сделать, это найти алгоритм неконтролируемого обнаружения аномалий, который подходит для этой ситуации. Я не знаю, как опубликовать какие-то цифры, или могу показать вам некоторые результаты. В любом случае спасибо! - person WWH98932; 13.01.2020
comment
Здорово! AutoEncoder будет типичным кандидатом для обнаружения аномалий. Возможно, что если вы просто скачаете STFT (или, возможно, уменьшите разрешение по частоте с помощью набора фильтров) из трех разделов, он сможет узнать, что важны именно различия. Вы также можете поэкспериментировать, вычислив различия пар или разницу между средним или медианным клинком. - person Jon Nordby; 13.01.2020