В школьные годы у меня был одноклассник, который мог послушать, как работает машина во дворе, и с серьезным лицом вынести вердикт: все в порядке, или что-то сломалось, и нужно срочно бежать за новыми деталями/маслом/инструментами! Я, как абсолютный чайник в автомобильном деле, всегда слышал обычное дребезжание очередной двенашки, никаких отличий не замечая и просто молча поражаясь его слуху и скилам.
Сейчас разбираться во внутренностях автомобиля я лучше не стал, зато начал работать с обработкой звуковых сигналов и машинным обучением, и здесь мы с вами постараемся понять, а возможно ли научить компьютер улавливать в звуке работы двигателя отклонения от нормы?
Как минимум, это просто интересно проверить, а в перспективе такая технология могла бы сэкономить кучу денег автовладельцам. По крайней мере в моем представлении, под капотом критичные поломки происходят постепенно, и на ранних стадиях, многие из них можно услышать, быстро и дешево исправить, сэкономив время, деньги и без того шаткие нервы.
Ну что, пожалуй, пора перейти от слов к делу. Поехали!
Сразу хочу сказать, что во всем, что касается математики и алгоритмов, я буду делать больший упор на смысл и понимание, формул и математических выкладок здесь не будет. Никаких новых алгоритмов я здесь не разработал, за формулами, при желании, лучше обратиться к гуглу и википедии, а также воспользоваться ссылками, которые я буду оставлять на протяжении всей статьи.
Все объяснения я буду приводить на примере звука двигателя с поломкой, взятого из этого ролика на YouTube.
Скачанный с ютуба файл (можно скачать с помощью браузерных расширений или просто изменив в ссылке youtube на ssyoutube) конвертируем в wav формат с помощью ffmpeg:
ffmpeg -i input_video.mp4 -c:a pcm_s16le -ar 16000 -ac 1 engine_sound.wav
Прежде чем начать обработку этого файла, скажу пару слов о том, что такое спектрограмма, и как она пригодится нам при решении этой задачи. Многие из вас, наверняка, видели подобную картинку — это амплитудно-временное представление звука или осциллограмма.
Если простым языком, то звук — это волна, и на осциллограмме наблюдаются значения амплитуды этой волны в заданные моменты времени.
Чтобы получить из такого представления спектрограмму, нам потребуется преобразование Фурье. С его помощью можно получить амплитудно-частотное представление звука или амплитудный спектр. Такой спектр показывает, на какой частоте и с какой амплитудой выражен исследуемый сигнал.
По сути, спектрограмма — это набор спектров коротких последовательных кусочков сигнала. Пожалуй, такого "определения" нам будет достаточно, чтобы не отвлекаться сильно от задачи. Все станет понятнее, если посмотреть на визуализацию спектрограммы (картинка получена с помощью WaveAssistant). По оси X здесь отложено время, по оси Y — частота, то есть каждый столбец в этой матрице — это модуль спектра в заданный момент времени.
На этой спектрограмме видно, что звук двигателя при отсутствии постукивания "выглядит" примерно одинаково, и выражен на частотах в окрестности 600, 1200, 2400 и 4800 Гц. Звук стука, который беспокоит владельца, очень хорошо различим в диапазоне частот 600-1200 Гц с 5 по 8 секунду. Поскольку запись сделана в довольно шумных условиях на улице, на спектрограмме эти шумы также присутствуют, что несколько усложняет нашу задачу.
Тем не менее, глядя на такую спектрограмму, мы с уверенностью можем сказать, где стук был, а где его не было. У компьютера же глаз нет, поэтому нам нужно подобрать алгоритм, который будет способен различить подобное отклонение (а желательно и не только его) при условии наличия шумов в записи.
Рассчитать спектрограммы можно с помощью библиотеки librosa следующим образом:
from librosa.util import buf_to_float
from librosa.core import stft # функция для вычисления спектрограммы
import numpy as np
from scipy.io import wavfile # для работы с wav-файлами
def cut_wav(path_to_wav, start_time, end_time):
sr, wav_data = wavfile.read(path_to_wav)
return wav_data[int(sr * start_time): int(sr * end_time)]
def get_stft(wav_data):
feat = np.abs(stft(buf_to_float(wav_data), n_fft=fft_size, hop_length=fft_step))
# транспонирование - ставим ось времени на первое место
return feat.T
wav_path = './engine_sound.wav'
train_features = []
# готовим признаки для обучения, time_list - содержит разметку данных
for [ts, te] in time_list:
wav_part = cut_wav(wav_path, ts, te)
spec = get_stft(wav_part)
train_features.append(spec)
X_train = np.vstack(train_features)
# готовим признаки для теста
full_wav_data = wavfile.read(wav_path)[1]
X_test = get_stft(full_wav_data)
Решение
Строго говоря, нам нужно решить задачу бинарной классификации, где нужно определить, сломан двигатель или работает в штатном режиме. Подобные задачи мы с коллегой уже описывали в своей предыдущей статье, там мы использовали сверточную нейронную сеть для классификации акустических событий. Здесь же такое решение вряд ли представляется возможным: нейронки очень любят, когда им даешь большие датасеты. Мы же имеем дело с одной вавкой длительностью чуть больше минуты, что большим датасетом явно не назовешь.
Выбор был остановлен на Gaussian Mixture Model (модель Гауссовых смесей). Хорошую статью, подробно описывающую принцип работы и обучения этой модели можно найти здесь Общая идея же этой модели заключается в том, чтобы описать данные с помощью сложного распределения в виде линейной комбинации нескольких многомерных нормальных распределений (подробнее о многомерном нормальном распределении здесь).
Так как двигатель в процессе своей работы звучит примерно "одинаково", звук его работы можно считать стационарным, и идея описания этого звука с помощью такого распределения выглядит вполне осмысленной. Чтобы понять суть GMM я очень рекомендую посмотреть пример обучения и выбора количества гауссоид здесь.
Наш случай отличается от представленных выше примеров тем, что вместо точек на двумерной плоскости будут использоваться значения спектра, взятые из спектрограммы сигнала. Подбирать параметры распределения, такие как тип ковариационной матрицы можно с помощью BIC критерия (пример, описание), однако в моем случае оптимальные с точки зрения этого критерия параметры показали себя хуже, чем те, что приведены в коде ниже:
from sklearn.mixture import GaussianMixture
n_components = 3
gmm_clf = GaussianMixture(n_components)
gmm_clf.fit(X_train)
Предполагая, что звук нормальной работы описывается распределением, параметры которого подобрались в процессе обучения, можно замерять, насколько любой звук "близок" к этому распределению.
Чтобы это сделать, можно вычислить среднее правдоподобие столбцов спектрограммы исследуемого сигнала, а затем подобрать порог, который будет отделять правдоподобие звуков хорошей работы от всех остальных. Построить правдоподобие для каждой секунды можно следующим образом:
n_seconds = len(full_wav_data) // sr
gmm_scores = []
# правдоподобие на каждую секунду
for i in range(n_seconds - 1):
test_sec = X_test[(i * sr) // fft_step: ((i + 1) * sr) // fft_step, :]
sc = gmm_clf.score(test_sec)
gmm_scores.append(sc)
Если отобразить полученные правдоподобия на графике, то получим следующую картинку.
В верхней части изображена спектрограмма сигнала, отображенная с помощью библиотеки matplotlib. Изменения, вызванные стуком, на ней заметны не так сильно, как на примере выше (именно поэтому здесь вы увидели 2 изображения). Тем не менее, если приглядеться, их все равно можно разглядеть. Вертикальными линиями помечены времена начала и конца стуков.
Выводы
Как видно из графика, в моменты звучания стука правдоподобие действительно становилось ниже порога, а значит, мы бы смогли разделить два этих класса (работа со стуком и без него). Но нужно сказать, что это значение находится достаточно близко к пороговому и в участках, где стук не слышен. Это происходит потому, что в записи часто встречаются посторонние шумы, которые также влияют на величину правдоподобия.
Добавим сюда обучения на буквально нескольких секундах звука, плохие условия записи, и уже можно вообще удивляться тому, что эксперимент хоть как-то удался!
Скорее всего, чтобы этот способ применить на практике и быть уверенным в его надежности, звука придется записать куда больше, а также хорошо разместить микрофон, чтобы свести попадание шумов на записи к минимуму.
Эта статья — лишь попытка решить подобную задачу, не претендующая на абсолютную правильность, если у вас есть идеи и предложения, а может быть вопросы, давайте обсудим их вместе в комментах или лично.
Полный код на github — здесь
lebedinskiy
Механик бьёт молоточком по фаре и говорит машине; «покашляйте» ;-)
А вообще интересно.
TimsTims
Уатт трижды обошел вокруг машины, потом попросил большую кувалду. Ему принесли кувалду, он примерился и ударил по кожуху машины. «Теперь запускайте», — сказал он. Машина заработала. После этого начинается самое интересное. Хозяевам стало жалко платить 1 000 долларов за один удар кувалдой, они чувствовали себя одураченными. Тогда они решили схитрить и предложили Уатту написать счет, чтобы затем его попытаться оспорить. Уатт взял лист бумаги и написал следующее. За удар кувалдой — 1 доллар, за знание, куда ударить — 999 долларов. Хозяева была вынуждены выплатить гонорар полностью.
KEugene
Возможно, правильнее было бы писать звук через стетоскоп.
VT100
Через датчик детонации? Хотя, у него может быть сильно ограниченный частотный диапазон.
KEugene
Честно говоря, не знаю относительно датчика. Знаю, что есть автомобильные электронные стетоскопы. Например, ADD350D (легко ищется через гугл). Просто в качестве примера. Диапазон частот 30Гц-15кГц.
Scott_Maison
Тоже подумал про датчик детонации. Благо они есть как узкополосные, так и широкополосные (как пример «бублик» от Бош).
Zmiy666
хех тоже как-то пытались сделать нечто подобное, но столкнулись с тем, что нужна огромная база шумов. Увы это нифига не бинарные значения, шум двигателя «из салона» и шум двигателя после 15к — отличаются весьма сильно, но при этом оба работают в штатном режиме.
Тут скорее нужно строить график износа двигателя ориентируясь на шум. И самое фиговое, что даже у пределах одной модели и одного возраста допустимые значения сильно гуляют. Даже после мойки моторного отсека звук меняется. Единственный доступный вариант это собирать обширную базу шумов с маркированной неисправностью и тренировать нейросеть выискивать ее. Ведь стук в двигателе может быть следствием износа двигателя, а может и следствием разбалтывания креплений бачка омывателя…
Конечно есть набор шумов, которые гарантированно говорят о поломке — но их то как раз отмаркировать не проблема и там действительно все бинарно — есть/нет. Но обычно в таких случаях это заметно и так, возникший новый звук в двигателе — почти всегда означает поломку. В этом плане мы решили попробовать сделать нечто куда как более простое Приложение для владельца авто — а именно — с помощью телефона записать шум двигателя и обозначить его как эталон, например при покупке. А дальше если будет казаться, что есть неисправность — запустить приложение и посмотреть насколько новый звук отклонился от эталона. Вот эта штука будет реально работать — эталонов можно создать несколько, в зависимости от места (например в гараже на холостых или на трассе под 100км) и в дальнейшем приложение покажет, показалось ли вам, что появился подозрительный стук или он реально появился.
irsick
Можно было бы оснастить машины системами, которые сами бы записывали шумы и анонимно присылали в ЦОД вместе с данными о модели, пробеге, показаниями датчиков и прочими логами. В Тесла таким образом собирают обучающие выборки с камер для автопилота.
GHouL512
Тогда наверное лучше вибрации на датчиках расположеных на креплениях двигателя и желательно чтобы данные снимались синхроно чтобы можно было локализовать примерное место вибраций. Ну а дальше машинное обучение на критичност вибрации в том то месте.
radonit
Именно так в авиадвигателях и делают, по данным датчиков вибрации даже можно обнаружить некоторые проблемы и локализовать их.
y_agafonov Автор
Спасибо за комментарий, очень интересно!
А что вы использовали в качестве признаков?
И какой стэк алгоритмов для классификации поломок? Нейронки или что-то еще?
Описанные проблемы выглядят решаемыми: плавный износ с течением времени можно попробовать обойти, просто переобучая модель, например, после прохождения техосмотра.
Тоже самое можно делать и после помывки двигателя. Что думаете по этому поводу?
SADKO
Подолью масла в огонь, у современных машин есть свои «мозги», представьте что вы заправили машину свежим топливом, или наоборот бедным.
Почуяв неладное, мозги начнут экспериментировать с обогащением\обеднением смеси, со смещением угла, итд. В это время, мотор может издавать массу новых звуков, вплоть до детонации, и это не есть проблема но фича!
y_agafonov Автор
Думаю, здесь вопрос в границах применимости подобного подхода, а они уж точно есть.
Если я правильно понял, то вы говорите о случае, когда машина издает звуки-отклонения, но эти звуки издаются, потому что «мозги» в машине намеренно что-то делают.
В таком случае система просто может синхронизоваться с «мозгами» и не отлавливать отклонения, когда «мозги» точно уверены, что отклонение это фича :)
Zmiy666
Честно, не знаю. Лично я в этом проекте занимался административно-ресурсной частью )
Ездил по автомастерским и салонам и делал запись звука разных авто, искал механиков, способных определять на звук неисправность, нарезал аудио с пометками для последующей обработки… Могу сказать, что даже на стадии записи столкнулись с кучей проблем. Например как и чем записать звук — чертов звук менялся от места записи, от положения микрофона, от качества микрофона. Загонять машину в безэховую камеру — глупость (никто не станет ради диагностики авто везти машину куда-то да еще и не бесплатно). Брать дорогой микрофон — тоже глупость — людям надо сделать тест быстро, здесь и сейчас, в идеале — просто по телефону дав послушать мотор. Работать надо с тем, с чем будет рядовой пользователь. Поэтому дошло до того, что я просто взял десяток телефонов и катался уже с ними и знакомый звуковик использовал десяток записей чтоб свести их в одну выделив общие моменты и откинув индивидуальные косяки телефонов… но даже так результат сильно гулял — очень много зависит от положения телефона и конкретной модификации самого авто. Дошло до того, что у нас два двигателя с пробегами по 30к км определялись совершенно по разному — я так понял, что это связано с условиями эксплуатации движка и износ у них был разный. Если вариант опорной записи чистого звука нового мотора еще можно получить у оффдиллера (так мы получили запись звука нескольких ниссанов — сделанную профессионально) то вот записи в условиях эксплуатации — уже попа Мы банально не можем загнать в профессиональную студию звукозаписи сотни и тысячи машин с разными несиправностями для создания адекватной базы. Не говоря уже о том, что мы не можем получить чистые звуки новых моторов, моделей, снятых с производства.((
После почти года безуспешных экспериментов мы поняли, что даже имея хорошую нейросеть мы банально не потянем объем базы, которая нужна.
Попробовали переключиться на проект с эталонами и отклонениями — там все выглядело проще в реализации, потому как есть всего две аудиозаписи, сделанные на один и тот-же аппарат и в одних и тех же условиях — сранвить их и выявить новые шумы было гораздо проще — но тот, кто писал приложение тогда свалил за рубеж на обучение и там потерялся, осев в крупной компании, так что увы, проект не дошел даже до стартапа.
Borjomy
Да потому, что надо не звук снимать, а вибрации! Есть специальные пьезо-акустические датчики. А еще, в зависимости от источника стука, он будет проявляться на определенных гармониках частоты вращения. И на определенных фазах положения коленвала.
Учите физику и механику двигателя. Без этих знаний вам никакая нейронная сеть не поможет.
Zmiy666
Эм… суть идеи была в том, чтоб диагностикой авто мог воспользоваться любой человек в любом месте. Смартфоном вибрации не снять… или качество будет еще хуже чем у звука.
Так то конечно любой дурак найдет неисправность, если загнать авто на стенд и снять вибрации сразу с десятка точек, можно локализовать источник с точностью до сантиметра.
exlacer
Вот именно так я это и вижу: в стандартных условиях конкретного автосервиса в конкретном месте, например одном боксе собираем все звуки машин и привязываем их к диагнозу который ставит механик. Затем скармливаем нейросети и ищем типичный узор шума для каждого из диагнозов. Получаем возможность более быстрой диагностики. Накопив данные от N авторемонтных мастерских выделяем существенное и отбрасываем то что индивидуально присуще конкретной мастерской (акустика помещения, особенности размещения микрофона и т.д.)
Возможно получаем универсальные данные в результате.
Дальше уже юзаем в апке.
Вариант №2
Если в машине владельца установить микрофон в стационарной точке и позволить компу машинки эту информацию анализировать и собирать/грузить в облако + добавить функционал в сам компьютер который позволяет записывать и хранить данные о ремонтах, то накопление данных может идти достаточно быстро.
Плюс следующий ремонтник уже будет иметь на руках «историю болезни» что улучшает качество ремонта.
SADKO
Ха, отличный пост из разряда «Осторожно, датасатанисты!»
Берётся здравая в общем идея, (имевшая практические реализации в прошлом и настоящем даже) и доводится до полного абсурда попыткой нарочито всё решить обучением машинным.
И слава Богу, что тут хотя-бы спектральный анализ прикрутили, а не стали обучать ему глубокую, свёрточную дуру. (что было-бы вполне возможно, и в чём-то даже
интереснейтсс...)Есть прекрасная, русская поговорка в полной мере раскрывающая суть датасатанизма, «Дьявол, в деталях.», ещё есть GIGO, которое справедливо и в обратном случае «что бы получить правильный ответ, нужно задать правильный вопрос», без этого датадрайв не работает в принципе!
Ещё есть анекдот про нейросеть, танк и трактор в поле, он как раз про этот случай.
So, звук мотора зависит от многих факторов, частоты оборотов, прогрева, итд Одна из тайн церкви автодиагностов в том, что работа мотора циклична и сопоставляя найденные в потоке данных фичи с циклограммой работы двигателя, можно достаточно точно локализовать проблему! А тайна церкви автомехаников в том, что на фиг им это не нужно, ведь можно подтянуть пару болтов, заменить подушку, а клиенту впарить регулировку клапанов или перебор коробки ;-)
Мысли сделать приложение\я были и у меня, но правда жизни в том, что работа диагноста не очень-то востребована, а для личных целей всё обходится осциллографом и набором приблуд которые легко делаются руками или покупаются.
Squoworode
Вы третий раз упоминаете этот анекдот на хабре, и ни разу не дали полный текст. Гугл тоже не справляется.
Есть, кстати, анекдот про тех, кто ссылается на анекдот, не давая его полный текст, и котёл в аду.
UndeadDragon
Придется иметь свои модели для каждой модели двигателя и даже это не поможет, придется учитывать модификации.
Потому, что у каждого движка свой звук и только владелец, с нейросетью наученной годами на конкретный экземпляр, способен слышать отклонения, и то едва уловимые.
Хочется привести в пример цокот клапанов дуратека 1.6, который, совершенно исправный, выдает такую гамму звуков, что каждый новый его покупатель первым делом бежит в автосервис.
Объемом данных в этой ситуации проблему не закрыть, миллиарды записей вряд ли когда-то соберутся.
В общем, автору все-таки придется начать разбираться в движках. Там типовых поломок три штуки и как бы мир не адаптировался к потреблятству, знать звук гремящей на холодную цепи жизненно необходимо.
y_agafonov Автор
Спасибо за ответ!
Согласен, для каждого конкретного случая нужна будет своя модель, и вопрос «какая?» очень даже открыт. Более того, скорее всего эта модель должна дружиться со всеми остальными системами, которые отслеживают состояние автомобиля, а не существовать отдельно от них, и при этом обучаться не на миллиардах, а на скромном количестве записей.
robomakerr
Возможно ли распознавать мяуканье котиков? А без обучающей выборки? Каково современное положение дел в этой важной области?
robomakerr
Какие идиоты это минусуют? Я без тени иронии спрашивал. Других специалистов «с обработкой звуковых сигналов и машинным обучением» здесь я не видел, спросить больше некого.
Exponent
Может лучше записать звук дигателя скажем на 10 000 км, затем сравнивать новую запись с первой и анализировать разницу.
Harbour
есть старая добрая вибродиагностика, используется давно на разных аггрегатах, в основном подшипниках. иногда подходит и для узлов авто.
gleb_l
Для более-менее успешной диагностики нужно добавить две ключевых размерности в набор данных: а) множество статических и динамических режимов, б) множество точек съёма вибро- и акустического спектра. Например, шатунный стук хорошо прослушивается на сбросе оборотов без нагрузки сверху или сбоку головки блока, коренной — снизу, звук подшипников помпы — с ее стороны итд. Снимать спектр лучше всего контактным датчиком типа стетоскопа, так как акустический микрофон насосёт отражённых шумов и вторичных колебаний от стенок моторного отсека, моторного щита и вообще от всех больших поверхностей — и в итоге получится средний спектр по больнице.
gleb_l
Ещё важна дифференциальная диагностика — термин из медицины, позволяющий по дополнительным признакам отличить схожие по основным симптомам болезни (грипп и менингит например). Пример с автомобилем — трещина маховика АКПП и стук коренных подшипников. Дополнительным признаком в этом случае является давление масла.
bisquitie
В той дыре где я живу и сейчас так все «автомеханики» делают.
kolu4iy
Боже, а потом оторванная лапка теплозащитного щитка приговорит клиента к переборке двигателя...
Borjomy
Ну у нее резонансная частота постоянная и не зависит от частоты вращения коленвала. При прямых руках и ясной голове такая ситуация легко детектируется.
Borjomy
Для таких измерений используются пьезо-акустические датчики с частоткой в сотни килогерц (удовольствие, кстати, недешевое). Ставиться они должны на конкретные детали двигателя. И подсоединяется все это не к звуковой плате, а к быстродействующим высокоразрядным ацп. Требуется синхронизация съема с положением коленвала. Вот когда вы разложите все шумы по траектории движении коленвала и вспомогательных узлов, тогда и можно начинать пытаться подключить нейронную сетку. А вообще, учите механику двигателя сначала, потом такую дисциплину, как вибро-акустический анализ.
Еще обратите внимание на понятие «синхронное осреднение», и на то, что цикл работы обычного четырех-цилиндрового двигателя состоит из нескольких оборотов коленвала.
А использование микрофона — это тупиковый путь. Максимальная информативность вибраций находится на частотах порядка сотни килогерц и выше.
И только после того, как вы на этой системе смогли получить результат, только тогда вы можете попробовать упростить измерительную часть.
pangolin
Вибродиагностика хорошо подходит для анализа простых механизмов вроде электродвигателей с насосами или вентиляторами. С двигателями внутреннего сгорания всё гораздо сложнее — там слишком много узлов и ударов, которые дают огромное число помех в высокочастотном диапазоне, где как раз находится вся информация о зарождающихся дефектах. Ни анализ по спектру огибающей, ни кепстральный анализ не могут вытащить из этой каши ничего толкового. Максимум, что получалось — проанализировать состояние подшипников на валу в режиме выбега, или проконтролировать виброперемещение на соответствие нормам. Впрочем, так обстояли дела лет десять назад. Может, с тех пор уже появились новые методики.
GeorgKDeft
Часто слышу про звуковую диагностику ДВС… но практически не встречал попыток делать звуковую диагностику ходовой в движении. С точки зрения надежности наверно сейчас актуальнее было бы сделать именно такую диагностическую бортовую систему.
Приведу пример — ступичный подшипник гудит (звук как правило всегда одинаковый, но цена ошибки на дороге потеря управляемости). Далее по степени опасности идет шаровая и другие элементы подвески (их сложнее определить на звук).
Конечно можно по «старинке» определять на месте «на звук» степень «живучести» отдельных элементов подвески, но это как то архаично уже (а датчиков на автомобиле уже столько что это скорее будет небольшим дополнением к общей массе, и особенно для беспилотных автомобилей).
UndeadDragon
Я думаю дело в том, что ходовку в круг заменить — вопрос пары десятков тысяч даже в случае многорыжачки, а мотор это сразу от сотни за кольца и до бесконечности. Поэтому всех волнует двигатель.
Гул ступичного пропустить очень сложно, это единственный звук от которого в прямом смысле начинает течь кровь из ушей :) А если серьезно, рукой пощупать ступицу достаточно, когда он гудит, он уже греется.
Короче мы тут все приходим к тому, что простые неисправности диагностируются самостоятельно при просто минимальном опыте. А сложные на звук уже не возьмешь, нужны доп. фичи из ОБД.
GeorgKDeft
Насчет опыта согласен, но вот китайские запчасти в плане ступичного и прочих элементов подвески вносят некую «рулетку» по части поломок. Вот результат этих поломок бывает от разбитого бампера до аварии с сдачей в металлом автомобиля после. Так что стоимость может быть разной, а с учетом развития беспилотных каршеринговых автомобилей и т.д. людей с опытом, и главное желанием разбираться «что там не так в подвеске» станет еще меньше.
Daddy_Cool
20+ лет назад моя однокурсница работала над подобной задачей, правда там был не двигатель авто, а двигатель миксера (видимо откуда-то была база данных по шумам). На сигнал натравливалась нейросеть и далее классифицировалось. Сейчас наверное анализатор шумов уже можно встроить в бортовой компьютер и добавить в штатную диагностику. Так что скоро будем видеть сообщения типа: «Ваш автомобиль сегодня как-то не очень хорошо звучит — пожалуйте в сервис».
Pafnutyi
В моторе могут неправильно стучать совсем немного вещей: поршни-типовой такой перезвон при перегазовке, клапана/гидрокомпенаторы цокают и всё. Если коленвал заскрежещет и без диагностики услышите ))) Цепь грм шумит от пробега, смысла мерять нет — проще менять так по спидометру. И зачем вообще узнавать диагностику по звуку? Наверное только при покупке — некоторый такой быстрый диагноз экстрасенса по телефону. Будут ли платить за такой сервис, тут надо думать и алгоритмы соответственно подгонять.
Paskin
Есть контора под названием Augury — довольно успешно занимающаяся такой диагностикой в промышленных масштабах.
Tim_23
В свое время я пытался сделать примерно тоже, найти ТЕ частоты, которые однозначно соответствовали бы поломке. Специально находил в ютубе ролики с поломанными шатунными и коленчатыми вкладышами (самые критичные стуки), стуки от гидрокомпенсаторов. Записывал также свой двигатель, так как у меня тоже что-то да стучало.
Единственное, что более менее сходилось это такт или главная частота, частота появления стучков, а она в принципе понятна, это либо 10-12 Гц (600-800 об/мин), либо в два раза медленнее, для распредвалов. А с частотой распредвалов как оказалось в двигателе может стучать много чего — гидрики, форсунки, рокеры, какой-нибудь успокоитель (это для американского двигателя V6).
Еще бывают двойные стучки, идущие друг за другом. Таких комбинаций может быть море.
Вот пример осцилограммы моего ДВС:
Из сети проблема с шатуном и вкладышами (спектр «пакета», где есть пиковый стук и фоновый)
Его осциллограмма, явная и громкая проблема с шатуном
В итоге понабрав спектров понял, что это бесполезно. Во-первых, потому что, стучать в двигателе действительно может много чего и не факт, что это аномалия, во-вторых у каждого стучка есть собственная частота, которая уникальна и зависит от массы, жестокости элемента, его крепления. Для того чтобы понять спектральные характеристики того или иного шума, нужно разобрать весь двигатель и проверять отдельно собственные частоты элементы при их соударении (возбуждении колебаний). Это непростая работа.
В итоге я бросил это дело, хотя конечно всегда слушаю двигатель и в принципе могу отличить звук гидрокомпенсатора от звука форсунки/клапана. Все остальные звуки, идущие от внутренностей, типа ГРМ и коленвала, на мой взгляд, точно идентифицировать не могут даже профи (судя по опыту общения и чтения разных форумов и видео).
Особенно тяжело фильтровать слабые сигналы на фоне общего шума ДВС(работы впускного коллектора к примеру). Кстати, еще важным аспектом является определение и источника (снизу, сверху ДВС).
Pafnutyi
Есть хороший быстрый способ диагностики — померять осцилограммы напряжение на АКБ при провороте двигателя стартером(катушки зажигания выключить). В наше время мало кто согласится выкручивать свечи для измерения компрессии при продаже, а здесь подкинул портативный осцилограф крутанул и уже видно если какой цилиндр не в порядке: предложений машин много можно искать другую ))
EGregor_IV
Потерю компрессии будет видно, если потеря — значительная, потому как добавляется распредвал со всем его богатым внутренним миром
Pafnutyi
Незначительную, 10% разницы по цилиндрам тоже видно, распредвал одинаково мешает всем цилиндрам ) Такую диагностику производители реально могут встроить в ЭБУ двигателя, работы пограмисту на пару часов, был бы экономический смысл.