¿Cuándo comienza la pista de la risa?


14

Uno de mis proyectos de fin de semana me ha llevado a las aguas profundas del procesamiento de señales. Al igual que con todos mis proyectos de código que requieren algunas matemáticas pesadas, estoy más que feliz de encontrar una solución a pesar de la falta de fundamento teórico, pero en este caso no tengo ninguno, y me encantaría recibir algunos consejos sobre mi problema , a saber: estoy tratando de averiguar exactamente cuándo la audiencia en vivo se ríe durante un programa de televisión.

Pasé bastante tiempo leyendo sobre enfoques de aprendizaje automático para detectar la risa, pero me di cuenta de que eso tiene más que ver con la detección de la risa individual. Doscientas personas que se ríen a la vez tendrán propiedades acústicas muy diferentes, y mi intuición es que deberían distinguirse a través de técnicas mucho más crudas que una red neuronal. Sin embargo, ¡puedo estar completamente equivocado! Agradecería pensamientos sobre el asunto.

Esto es lo que he probado hasta ahora: corté un extracto de cinco minutos de un episodio reciente de Saturday Night Live en dos segundos clips. Luego etiqueté estas "risas" o "no-risas". Usando el extractor de funciones MFCC de Librosa, ejecuté un clúster de K-Means en los datos y obtuve buenos resultados: los dos clústeres se asignaron muy bien a mis etiquetas. Pero cuando intenté recorrer el archivo más largo, las predicciones no aguantaron.

Lo que voy a intentar ahora: voy a ser más preciso sobre la creación de estos clips de risa. En lugar de dividir y ordenar a ciegas, voy a extraerlos manualmente, para que ningún diálogo contamine la señal. Luego los dividiré en clips de un cuarto de segundo, calcularé los MFCC de estos y los usaré para entrenar un SVM.

Mis preguntas en este punto:

  1. ¿Tiene algo de esto sentido?

  2. ¿Pueden ayudar las estadísticas aquí? He estado desplazándome por el modo de vista de espectrograma de Audacity y puedo ver muy claramente dónde se producen las risas. En un espectrograma de potencia de registro, el habla tiene una apariencia muy distintiva, "surcada". En contraste, la risa cubre un amplio espectro de frecuencia de manera bastante uniforme, casi como una distribución normal. Incluso es posible distinguir visualmente los aplausos de la risa por el conjunto más limitado de frecuencias representadas en los aplausos. Eso me hace pensar en desviaciones estándar. Veo que hay algo llamado prueba de Kolmogorov-Smirnov, ¿podría ser útil aquí? Espectrograma de potencia de registro (Puedes ver la risa en la imagen de arriba como una pared de naranja golpeando al 45% del camino).

  3. El espectrograma lineal parece mostrar que la risa es más enérgica en las frecuencias más bajas y se desvanece hacia las frecuencias más altas. ¿Significa esto que califica como ruido rosa? Si es así, ¿podría ser un punto de apoyo en el problema? Espectrograma

Pido disculpas si hice mal uso de alguna jerga, he estado en Wikipedia bastante para esta y no me sorprendería si me metiera un poco.


1
Estoy de acuerdo en que "no necesitará una red neuronal para obtener un detector sólido de pistas de risa". También estoy de acuerdo en que arrojes Kolmogorov a la señal, teniendo en cuenta que si tienes razón, y la pista de la risa es la suma (ponderada) de iid risas, deberías obtener características normales de algún tipo. Quizás todavía le gustaría aumentar la resolución de frecuencia. Por cierto, para alguien que no está "interesado" en DSP, su jerga está bastante bien :) lamentablemente, no soy un tipo de audio, por lo que probablemente no sea de mucha ayuda.
Marcus Müller

Estoy felíz de ayudar. ¿Tienes algún dato para entrenar? Una de las cosas más importantes es el etiquetado de datos. Basura dentro basura fuera. Uno de los enfoques más simples y efectivos sería entrenar un GMM de bolsa de marcos y evaluar la probabilidad.
jojek

Es posible que desee verificar primero, si puede separar la risa del silencio al verificar la potencia / amplitud de su señal en momentos determinados. Dándole la posibilidad de umbral de momentos donde "algo" está sucediendo. Entonces podrías tratar de ver la distribución de la frecuencia. Por ejemplo, el habla puede tener algunos picos agudos distintivos (no importa dónde estén exactamente estos picos, solo si existen), mientras que la risa es uniforme como usted dijo. Hacer un seguimiento de esto podría generar un valor para decidir si se trata de la risa. (Necesita la información del volumen para asegurarse de que no tiene un silencio uniforme)
usuario6522399

Respuestas:


0

Según su observación, ese espectro de la señal es lo suficientemente distinguible, puede usar esto como una característica para clasificar la risa del habla.

Hay muchas formas de ver el problema.

Enfoque n. ° 1

En un caso, solo puede mirar el vector del MFCC. y aplicar esto a cualquier clasificador. Dado que tiene muchos coeficientes en el dominio de la frecuencia, es posible que desee ver la estructura de los clasificadores en cascada con algoritmos de refuerzo como Adaboost basados ​​en esto, puede comparar entre la clase de voz y la clase de risa.

Enfoque n. ° 2

Te das cuenta de que tu discurso es esencialmente una señal que varía en el tiempo. Entonces, una de las formas efectivas de hacerlo es observar la variación en el tiempo de la señal misma. Para esto, puede dividir las señales en lotes de muestras y observar el espectro para ese momento. Ahora, puede darse cuenta de que la risa podría tener un patrón más repetitivo durante un período de tiempo estipulado, ya que el habla posee más información y, por lo tanto, la variación del espectro sería bastante mayor. Puede aplicar esto al tipo de modelo HMM para ver si permanece constantemente dentro del mismo estado para algún espectro de frecuencia o si continúa cambiando continuamente. Aquí, incluso si ocasionalmente el espectro del habla se asemeja al de la risa, cambiará más el tiempo.

Enfoque n. ° 3

Fuerza para aplicar el tipo de codificación LPC / CELP en la señal y observar el residuo. La codificación CELP es un modelo muy preciso de producción de voz.

De la referencia aquí: TEORÍA DE LA CODIFICACIÓN CELP

Las redundancias en la señal de voz casi se eliminan después de la predicción a corto plazo y la predicción a largo plazo de la señal de voz y el residual tiene muy poca correlación restante. Luego se busca una excitación que sintetiza el discurso y se busca el índice y la ganancia del libro de códigos desde el libro de códigos fijo. El criterio óptimo de selección del índice del libro de códigos se basa en MMSE entre la voz sintetizada localmente y la señal de voz original.

En pocas palabras, después de eliminar todo el discurso que se predice del analizador, lo que queda es el residuo que se transmite para recrear la forma de onda exacta.

¿Cómo ayuda eso con tu problema? Básicamente, si aplica la codificación CELP, la voz en la señal se elimina principalmente, lo que queda es residuo. En caso de risa, la mayoría de la señal podría retenerse porque CELP no podrá predecir dicha señal con el modelado del tracto vocal, donde el discurso individual tendrá muy pocos residuos. También puede analizar este residuo nuevamente en el dominio de la frecuencia, para ver si es risa o habla.


0

La mayoría de los reconocedores de voz usan no solo los coeficientes MFCC sino también la primera y la segunda derivada de los niveles MFCC. Supongo que la aparición sería muy útil en este caso y te ayudaría a distinguir una risa frente a otros sonidos.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.