Hacia análisis de voz forense basado deep learning
Proyecto: PAPIIT IA401517
Responsable: Dra. Fernanda López Escobedo
Elaborado por Ivan Vladimir Meza Ruiz
IIMAS-UNAM
Marzo de 2019
Se han detectado los siguientes retos en la identificación de hablante a través de voz forense para el español de México:
La variabilidad natural de la voz se refiere a que una persona no siempre habla de la misma manera, no sólo por el hecho de que se dicen cosas diferentes, sino porque es imposible que que el hablante digas dos veces lo mismo de la misma manera (Rose, P., 2002). Si a eso le agregamos que existen diferentes medios para transmitir la voz que sistemáticamente modifican la voz misma, el problema se complica mucho más. Por otro lado, en años recientes ha habido un avance importante en el análisis de señales de voz que han permitido el mejoramiento de tecnologías como el Reconocimiento de Voz basado en aprendizaje profundo. Este trabajo presenta la propuesta para transferir avances de identificación de rostros humanos al ámbito de la voz, en particular el método conocido como triplet loss. Dicho método busca ordenar datos representativos de la voz en puntos, de tal forma que los datos de una persona queden cercanos, mientras que los datos de personas diferentes queden alejados.
Antes de poder procesar los segmentos de voz es necesario identificar los segmentos de voz de las grabaciones para eso se hace un proceso denominado VAD (detección de actividad de voz). En nuestro caso usamos la librería de WebRCTVad[1]. Esta librería nos permite identificar segmentos de audio donde la persona está hablando de los en los que no está hablando.
Una vez con la grabación filtrada, se representa a la voz en su forma comúnmente denominada espectrograma. En esta representación, una grabación se representa como una imagen que captura la evolución de las frecuencias de una sonido (voz en nuestro caso). La siguiente imagen representa un espectrograma para la frase: con voz me entierren, Sancho, que sabéis de todo, respondió el Duque; y yo espero que seréis tal gobernador como vuestro juicio. Como es de esperarse los segmentos de silencio han sido eliminados.
Espectrograma de señal de audio
Las grabaciones en estos experimentos fueron grabadas a 16K Hz, y corresponden a segmentos de voz leídos. Con esto en mente el espectrograma se generó con los siguientes parámetros:
La metodología de triplet loss fue presentada en Florian, et. al, 2015. El principal aporte del trabajo es la construcción de una función de costo (loss) que utiliza una tripleta de hechos sobre imágenes de rostros para entrenar a una red del tipo CNN a generar representaciones adecuadas de estos rostros. Una red CNN se puede ver como una red que resume una imágen en un vector (embedding). Si el embedding es adecuado, este debe estar más cerca de un rostro de la misma persona, y más lejano de una persona distinta, triplet loss captura esta intuición e impone una función que calcula cuánto se cumple esto y genera una señal de corrección a la red. El esquema presentado aquí se muestra en la siguiente imagen. Además de la función de costo, triplet loss también define mecanismos de cómo entrenar los datos, ya que si la condición principal ya se cumple, entonces no es necesario modificar el comportamiento de la red CNN, pero sino es el caso sí vale la pena hacerlo, este proceso no es tan evidente en un principio y esta metodología establece una forma principal de cómo hacerlo.
Ejemplo de triplet loss en rostros (tomado de https://omoindrot.github.io/triplet-loss)
Por el momento estamos usando voces de la colección denominada Voxforge que contiene segmentos de voces de personas que leen segmentos del Quijote. La colección de grabaciones tiene las siguientes características:
Total de hablantes | 2,180 |
Total de grabaciones | 21,692 |
Duración promedio | 8.25 segs |
Duración mínima | 0.61 segs |
Duración mínima | 37.12 segs |
En la adaptación del método de triplets a datos de voz, seleccionaremos grabaciones de una persona y la transformaremos usando la CNN. La red CNN escogida se diseñó de la siguiente forma:
Esto quiere decir que la Red CNN está compuesta por cinco capas CNN que aprenden las representación locales, cada una de estas capas con una capa de ruteo tipo maxpoling que resumen la información, y finalmente hay una capa vectorial de 1024 que representa al embeeding que representa la señal. La representación gráfica de esta red se presenta a continuación:
Red CNN obtenida a través de la metodología CNN
En este momento tenemos resultados cualitativos basados en visualizaciones. Primero sobre el comportamiento del aprendizaje y segundo tiene que ver con una apreciación visual sobre el trabajo hecho por la red.
La primera es la evolución de la pérdida (triplet loss) durante entrenamiento, como se puede observar oscila alrededor de 0.5 que es margen que se pone entre voces de la misma persona y voces de distinta persona.
Evaluación de pérdida durante entrenamiento
La segunda gráfica sobre el comportamiento del entrenamiento es sobre la cantidad de datos usados durante el entrenamiento. En este caso se observ que la tendencia general es que conforme entre más, necesita menos datos, esto es comportamiento deseado porque significa que conforme avanza la red entrega los embeddings adecuados y no es necesario modificar a la red.
Para responder la pregunta si la red CNN está aprendiendo a resumir datos de forma correcta, a continuación se presentan algunos resultados preliminares en la obtención de embeddings en datos de prueba.
En la imagen a continuación se aprecia el comportamiento de la red con 10 identidades diferentes (no necesariamente la misma grabación), como pueden observar muestra que los resultados son muy promisorios ya que de forma generar la red logra posicionar a las grabaciones de forma separada para aquellas cuya identidad no corresponda. Sin embargo hay casos en los que se mezcla como es para la identidad 2 y 3 que se localizan en el centro.
Experimento con pocas identidades y poco entrenamiento
La siguiente imagen muestra el comportamiento para una cantidad mayor de identidades (50) y todavía con poco entrenamiento (identidades en colores diferentes).
.
Experimento con varias identidades y poco entrenamiento
De la imagen anterior se ve que ha sido difícil para la red, sin embargo a continuación mostramos el efecto de más entrenamiento. Como se puede apreciar el comportamiento es más estable, aunque todavía hay áreas en donde coinciden varias identidades, para nosotros esto es una señal de que esas voces contienen características similares.
Experimento con varias identidades y entrenamiento considerable
Finalmente presentamos un acercamiento a las zona para apreciar más el comportamiento que logra la red al distinguir las voces, y las dificultades de esta encuentra con otras voces. En este se pueden apreciar el comportamiento de la identidad numero 12, 35 y 33 que quedan separadas del resto, mientras que la identidad 32, 25, 6, 41 y 44 están amontonadas en una región.
Acercamiento a experimento con varias identidades y entrenamiento considerable
En este trabajo preliminar se demuestra como se puede usar deep learning, en particular la técnica de triplet loss, para obtener una representación vectorial de muestras de voz de un hablante. Se muestra que para varios casos misma identidad de quien produjo la voz queda cercana, mientras que identidades diferentes quedan lejanas en el espacio vectorial.
Los siguientes pasos consisten en identificar diferentes configuraciones del sistema para lograr una mejor separación. Sin embargo, el objetivo de este proyecto no es en sí separar las voces lo más distantes posibles, sino cuantificar el poder de esta técnica como prueba forense. En este escenario se busca establecer dos métricas sobre las muestras de voz. El escenario es la siguiente, de tienen dos grabaciones, una para la que sabemos la identidad (indubitada) y una para la que no sabemos (dubitada) pero sospechamos que pertenece a la identidad de la indubitada: qué tanto se parecen las voz (distancia entre dubitada y indubitada), y que tan común es la voz (distance entre dubitadas y una población). Escenarios que esperamos es que si la identidad es la misma, entonces dubitada e indubitada deberían quedar cercanas, en el caso de no duda, en regiones muy solas. En el caso de que no sea la identidad, quedan separadas en regiones muy solas, o en regiones donde convergen otras identidades, es decir su voz es muy común para la población. Con esto en mente se tienen los siguientes experimentos en el futuro:
[1] https://github.com/wiseman/py-webrtcvad