11

Я разработал доказательство концепции системы для распознавания звука с использованием 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 (из словаря) звук может быть отфильтрован с использованием модели мусора или наполнителя, но он говорит, что он обучен с использованием конечного набора неизвестных слов, где это не может быть применено к моему поскольку я не знаю всех звуков, которые система может записывать.

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

+2

Я думаю, что это должно быть перемещено в Cross Validated. – ziggystar

+3

Я согласен, что получилось бы больше (и более квалифицированное) внимание Cross Validated. К сожалению, сигнал летучей мыши (ака «достаточно глазных ящиков с достаточно высокими разрешениями»), кажется, отключен, поэтому Радеку пришлось бы его там положить. («Входящий» не имеет возможности для CV или вручную указывать, где он принадлежит. Meh.) – Godeke

ответ

3

Чтобы отклонить другие слова, вам нужна модель наполнителя.

Это статистическая проверка гипотезы. У вас есть две гипотезы (слово известно, а слово неизвестно). Чтобы принять решение, вам нужно оценить вероятность каждой гипотезы.

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

ACOUSTIC КЛЮЧЕВЫМИ пятнистость в речевом с приложениями к интеллектуальному анализу данных AJ Kishan Thambiratnam

http://eprints.qut.edu.au/37254/1/Albert_Thambiratnam_Thesis.pdf

1

Так что я сделал это: Я создал упрощенную версию модели наполнителя , Каждый хмм, представляющий звук водонагревателя, звук стука и звука речи - это отдельное 6 состояний хм, обученное звуками из набора упражнений 30, 50, 90 звуков соответственно различной длины от 0,3 секунды до 10 секунд. Затем я создал модель наполнителя, состоящую из 1 состояния хм, состоящего из всех звуков обучающего набора для стука, акварели и речи. Так что если оценка модели hmm больше для данного звука, чем оценка наполнителя - звук распознается иначе, это неизвестный звук. У меня на самом деле нет больших данных, но у меня есть перфекция следующего теста для отклонения ложных срабатываний и отклонения истинных положительных результатов от невидимых звуков.

true positives rejection 
knocking 1/11 = 90% accuracy 
watertap 1/9 = 89% accuracy 
speech 0/14 = 100% accuracy 


false positives rejection 
Tested 7 unknown sounds 
6/7 = 86% accuracy 

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

0

Дискриминационные модели, как правило, лучше выполняют задачи классификации, чем генеративные модели.

Вы можете определенно повысить производительность этой задачи, используя специально разработанный CRF или классификатор max-margin (структурированный svm).

Настоящая статья (http://ttic.uchicago.edu/~jkeshet/papers/KeshetGrBe07.pdf) обсуждает проблему классификации, похожую на вашу, и показывает, что формулировка max-margin превосходит генеративный подход с моделью наполнителя.

Возможно, нет ничего, что могло бы сделать то, что я описал, но с некоторыми усилиями вы могли бы расширить svm-struct. (Реализация hmm-svm не будет работать для вашей проблемы, потому что вам нужно заранее указать скрытую структуру состояния, а не изучать произвольно связанную скрытую структуру.)

Смежные вопросы