11

He desarrollado un sistema de prueba de concepto para el reconocimiento de sonido utilizando mfcc y modelos de markov ocultos. Da resultados prometedores cuando pruebo el sistema con sonidos conocidos. Aunque el sistema, cuando se ingresa un sonido desconocido, devuelve el resultado con la coincidencia más cercana y el puntaje no es tan distinto de idear que es un sonido desconocido, por ejemplo:umbral de modelo de markov oculto

He entrenado 3 modelos de markov ocultos uno para voz, uno para agua que sale del grifo de agua y otra para golpear el escritorio. Entonces probarlos en los datos que no se ven y conseguir 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 

Aquí, la entrada es un sonido desconocido pero todavía devuelve el valor más cercano que no existe un sistema para el filtrado de umbrales/basura.

Sé que en la detección de palabras clave se puede filtrar un sonido OOV (sin vocabulario) utilizando un modelo de basura o relleno pero dice que está entrenado usando un conjunto finito de palabras desconocidas donde esto no se puede aplicar a mi sistema ya que no conozco todos los sonidos que el sistema puede grabar.

¿Cómo se resuelve un problema similar en el sistema de reconocimiento de voz? ¿Y cómo puedo resolver mi problema para evitar falsos positivos?

+2

Creo que esto debería moverse a Cross Validated. – ziggystar

+3

Acepto que obtendría más (y mejor calificada) atención de Cross Validated. Lamentablemente, la señal del murciélago (también conocido como "suficientes globos oculares con permisos lo suficientemente altos") parece estar desactivada, por lo que Radek tendría que ponerlo allí. (El "pertenece encendido" no tiene una opción para CV o manualmente especificando a dónde pertenece. Meh.) – Godeke

Respuesta

3

Para rechazar otras palabras, necesita un modelo de relleno.

Esta es una prueba de hipótesis estadística. Tienes dos hipótesis (la palabra es conocida y la palabra es desconocida). Para tomar una decisión, debe estimar la probabilidad de cada hipótesis.

El modelo de relleno está entrenado por el habla que usted tiene, solo de una manera diferente, por ejemplo, podría ser un único gaussiano para cualquier sonido de voz. Compara el puntaje del modelo de relleno genérico y puntaje de la palabra HMM y toma una decisión. Para obtener información más detallada y algoritmos avanzados, puede consultar cualquier documento sobre localización de palabras clave. Esta tesis tiene una buena revisión:

ACÚSTICA LOCALIZACIÓN palabra clave en la HABLA CON APLICACIONES A DATA MINING AJ Kishan Thambiratnam

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

1

Así que lo que he hecho es: He creado mi versión simplificada de un modelo de relleno . Cada hmm que representa el sonido watertap, el sonido de golpeteo y el sonido del habla es un estado independiente de 6 hmm entrenado por sonidos del conjunto de entrenamiento de 30, 50, 90 sonidos, respectivamente, de varias longitudes de 0,3 segundos a 10 segundos. Luego creé un modelo de relleno que es un estado hmm que consiste en todos los sonidos del conjunto de entrenamiento para golpeteo, saliente y habla. Entonces, si el puntaje del modelo de hmm es mayor para un sonido dado que el puntaje del relleno, el sonido se reconoce, de lo contrario es un sonido desconocido. Realmente no tengo grandes datos, pero he perforado una siguiente prueba para el rechazo de falsos positivos y el rechazo de verdaderos positivos en sonidos no vistos.

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 de esta prueba rápida que se puede concluir que este enfoque da resultados razonables aunque no tengo una sensación extraña que puede no ser suficiente.

0

Los modelos discriminativos tienden a tener un mejor rendimiento en tareas de clasificación que los modelos generativos.

Definitivamente puede obtener un mejor rendimiento en esta tarea utilizando un CRF especialmente diseñado o un clasificador de margen máximo (svm estructurado).

Este documento (http://ttic.uchicago.edu/~jkeshet/papers/KeshetGrBe07.pdf) analiza un problema de clasificación similar al suyo y muestra que una formulación de margen máximo supera el enfoque generativo con el modelo de relleno.

Probablemente no haya nada fuera de lo común que pueda hacer lo que he descrito, pero, con un poco de esfuerzo, es posible que pueda extender svm-struct. (La implementación de hmm-svm no funcionará para su problema porque necesita especificar la estructura de estado oculta por adelantado en lugar de aprender una estructura de estado oculta arbitrariamente conectada).

Cuestiones relacionadas