14 votos

Modelo oculto de Markov umbralización

He desarrollado una prueba de concepto del sistema para el reconocimiento de sonidos utilizando mfcc y modelos ocultos de markov. Da resultados prometedores cuando me ponga a prueba el sistema en el conocimiento de los sonidos. Aunque el sistema anterior, cuando un desconocido sonido es ingresado devuelve el resultado con la coincidencia más cercana y la puntuación no es distinta a diseñar es un desconocido de sonido por ejemplo:

He entrenado 3 modelos ocultos de markov uno de discurso, uno para el agua que sale del grifo de agua y uno para golpear sobre la mesa. Entonces yo a prueba en los invisibles de datos y obtener resultados siguientes:

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
Here the input is an unknown sound but it still returns the closest match as there is no system for thresholding/garbage filtering.

Sé que en la palabra clave manchado un OOV (de vocabulario), el sonido puede ser filtrados mediante un cubo de basura o relleno modelo, pero se dice que se formó mediante un conjunto finito de palabras desconocidas donde esta no puede ser aplicada a mi sistema como no conozco todos los sonidos que el sistema puede registrar.

Cómo es un problema similar al resuelto en el sistema de reconocimiento de voz? Y ¿cómo puedo resolver mi problema, para evitar falsos positivos?

13voto

Así que lo que he hecho es: he creado mi versión simplificada de un relleno modelo. Cada hmm que representa watertap sonido, la anulación de sonido y el sonido es independiente de 6 estado hmm entrenados por los sonidos del conjunto de entrenamiento de 30, 50, 90 sonidos, respectivamente, de diferentes longitudes de 0,3 segundos a 10 segundos. A continuación, he creado un relleno modelo que es un 1 estado hmm que consiste en od todo el conjunto de entrenamiento sonidos para llamar, watertap y el habla. Así que si el hmm modelo de puntuación es mayor para un determinado sonido que el relleno de la puntuación de sonido es reconocido, de otra forma es una incógnita sonido. Realmente no tengo datos de gran tamaño, pero tengo perfoormed una prueba siguiente de falsos positivos y rechazo de verdaderos positivos rechazo en invisible sonidos.

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

Así que a partir de esta prueba rápida puedo concluir que este método proporciona resultados razonables aunque tengo una extraña sensación de que puede no ser suficiente.

5voto

JMW.APRN Puntos 21

Muy buena pregunta!

Como usted menciona, la única manera de conseguir el HMM para darle un "no sé" (vamos a llamar a OOV) la respuesta es un estado especial porque siempre las salidas de los estados con la mayor probabilidad en virtud de su modelo. Así que usted tiene que asegurarse de que OOV tiene mayor probabilidad debajo de cada entrada que no es speech, watertap o knocking.

La respuesta corta es que esto no es posible. Porque un HMM no es absoluto patrón de reconocimiento. Sólo se compara la probabilidad de que los resultados en el modelo, y en el contexto en que fue entrenado.

Pensar en una entrada que sería speech y knocking al mismo tiempo. Más probable es que el HMM "dude" entre estos dos estados, porque esta entrada tiene las características de cada uno. En la final, que sería la salida de uno de esos, pero es bastante improbable que sería la salida de OOV. En el caso de la palabra clave manchado, mi conjetura es que usted podría encontrar entradas inteligentes que constantemente le engañar a sus HMM. Sin embargo, los autores probablemente saber lo que de entrada a esperar y han elegido sus finito lista de palabras desconocidas, de modo que estos venenosos entradas son poco comunes.

Te aconsejo que hagan lo mismo. Pensar acerca de las situaciones que va a utilizar el HMM de tren y un OOV estado en la más común de las entradas que desea eliminar. Usted puede pensar siquiera en tener varios OOV estados.

5voto

ScottKoon Puntos 2139

Esto es algo común en el campo de reconocimiento de gestos. La respuesta es crear un modelo de umbral, como se describe en el artículo de Lee y Kim (1999)

Desempeña el mismo papel como material de relleno o de basura modelo, pero no necesita ser entrenado por separado, como usted dice. Usted puede crear un modelo de umbral mediante la conexión de todos los estados de transición de los otros modelos y la inicialización de la transición con el uniforme de probabilidades, conectar aquellos estados. Por favor, eche un vistazo en el papel para ver cómo se puede hacer.

Incluso si su biblioteca no admite ergodic modelos, no debe impedir la creación manual de un modelo del tamaño requerido y del ajuste de los estados en consecuencia. Si realmente queremos una biblioteca para que, a continuación, las implementaciones de los modelos ocultos de Markov clasificadores , incluyendo el apoyo para el umbral de los modelos están disponibles en la Accord.NET Marco, por ejemplo.

Descargo de responsabilidad: yo soy el autor de esta biblioteca.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X