Я разработал экспериментальную систему распознавания звука с использованием mfcc и скрытых марковских моделей. Это дает многообещающие результаты, когда я тестирую систему на известных звуках. Хотя система, когда вводится неизвестный звук, возвращает результат с ближайшим совпадением, и оценка не настолько различна, чтобы придумать, это неизвестный звук, например:
Я обучил 3 скрытые марковские модели одну для речи, одну для воды выходящий из водопроводного крана и один для стука по столу. Затем я проверяю их на невидимых данных и получаю следующие результаты:
input: speech
HMM\knocking: -1213.8911146444477
HMM\speech: -617.8735676792728
HMM\watertap: -1504.4735097322673
So highest score speech which is correct
input: watertap
HMM\knocking: -3715.7246152783955
HMM\speech: -4302.67960438553
HMM\watertap: -1965.6149147201534
So highest score watertap which is correct
input: knocking
HMM\filler -806.7248912250212
HMM\knocking: -756.4428782636676
HMM\speech: -1201.686687761133
HMM\watertap: -3025.181144273698
So highest score knocking which is correct
input: unknown
HMM\knocking: -4369.1702184688975
HMM\speech: -5090.37122832872
HMM\watertap: -7717.501505674925
Здесь входным сигналом является неизвестный звук, но он по-прежнему возвращает наиболее близкое совпадение, так как нет системы пороговой обработки/фильтрации мусора.
Я знаю, что при обнаружении ключевых слов OOV (вне словарного запаса) звук может быть отфильтрован с использованием модели мусора или наполнителя, но в нем говорится, что он обучается с использованием конечного набора неизвестных слов, где это не может быть применено к моей системе. так как я не знаю всех звуков, которые система может записывать.
Как решается аналогичная задача в системе распознавания речи? И как мне решить мою проблему, чтобы избежать ложных срабатываний?