martes, marzo 14, 2023

"Are You Talkin' ta me?" Speaker Recognition & Doxing

Tras las primeras partes de este artículo, donde hablamos de "Cómo saber quiénes, cuándo y para qué están hablando a tu SmartSpeaker" y de cómo utilizar "Algoritmos de Machine Learning para analizar la voz", vamos con la tercera parte, donde vamos a contar cómo podemos realizar un proceso de localizar quién es esa persona, describiendo un proceso de Doxing y el uso de algoritmos de Inteligencia Artificial para comparar voces.

Figura 23: "Are You Talkin' ta me?" Speaker Recognition & Doxing

Para el ejemplo utilizado como hilo conductor de esta charla, se trataba de hacer un análisis dentro de nuestro ámbito de vida, pero este proceso se puede realizar mucho más exhaustivo si se trata de una investigación forense policial. 

Big Data de Voces

En cualquier caso, hay que comenzar por tener un Big Data de Voces con los posibles "sospechosos", incluso si estas son todas las personas de nuestro entorno de las que tengamos algún audio grabado, o si se trata de toda la base de datos de audios de los empleados de una empresa, o personas que salen en YouTube. El tamaño de ese Data Lake de audios depende del tamaño de la investigación. El proceso es el siguiente:
  1. Construir el Data Lake de Audios Taggeados.
  2. Si en un audio salen varias personas hacer la Diarization
  3. Tener un modelo de IA para compara voces.
  4. Hacer una búsqueda en el Big Data de Audios comparando muestras automáticamente.
Este proceso implica conseguir primero todos los audios que sean posibles del ámbito de sospechosos. Por ejemplo, en un entorno judicial se podrían utilizar las voces grabadas de personas investigadas, o personas condenadas por delitos similares. Podría haber una colaboración a nivel internacional de los cuerpos de seguridad para compartir estas capacidades de búsqueda.

Speaker Diarization

En el entorno de nuestra presentación, donde hablamos de una investigación personal de alguien que busca quién está en su casa cuándo él no está hablando con su Alexa, podríamos buscar entre amigos, conocidos, compañeros, buscando sus audios en WhatsApp, Telegram, Google Assistant, Alexa, Youtube, o cualquier otra red social como Tiktok o Twitch

Figura 24: Construir el Data Lake con pre-procesado de Speaker Diarization

Para realizar un proceso de Speaker Diarization, hemos utilizado un modelo de Inteligencia Artificial que se encuentra en el Toolkit pyannote.audio y que se puede utilizar pre-entrenado mediante Token a través de HuggingFace. Se escoge, por cada voz, el momento de vídeo/audio donde más habla de seguido cada persona, y se guardan como ficheros .wav, teniendo tantos como diferentes hablantes haya en el vídeo.

Así que, después de descargar todos los audios, diarizarlos, y taggearlos poniendo cuál es la fuente en la que se obtuvo, ya tendremos un Big Data sobre el que trabajar para localizar a nuestro objetivo. 

Speaker Recognition

Ahora debemos pasar a la siguiente fase, que consiste en tener un modelo de Inteligencia Artificial entrenado para comparar voces y saber si es de la misma persona o no. Para ello, al igual que los modelos de comparación de caras, debemos entrenar el algoritmo con un dataset de personas que le permita de reconocer cómo comparar las voces de los "speakers". 
El modelo de verificación de voz que hemos utilizado el modelo de Inteligencia Artificial Speaker Recognition pre-entrenado con el dataset VoxCeleb - VoxCeleb1 y VoxCeleb2-, que tiene miles de voces reales de famosos etiquetados, que ya se encuentra disponible para usar en el toolkit Speechbrain.
Este modelo codifica ambas voces en correspondientes vectores numéricos basándose en las características de la voz, al estilo de los espectógramas. Estos vectores vectores se comparan entre sí y se calcula un grado de  similitud, siendo Similitud=1 la que  representa exactamente la misma voz, mientras que 0 significa que son totalmente distintas.

Normalmente se obtienen puntuaciones en voces similares con rangos de Similitud mayores al 0.60, y para voces no similares menores del 0.20 (lo normal es que sean valores muy bajos en torno a 0). Se establece un umbral de similitud por nosotros para considerar si se trata de la misma persona o no, por ejemplo 0.50

Doxing con audios de voz

Una vez construido el modelo de Speaker Recognition, ya podemos comenzar a probarlo. Para ello, tenemos aquí unos pruebas con un Google Colab corriendo este modelo, donde podemos ver que si el Speaker no es reconocido, nos da la información de error.

Figura 29: Speaker Recognition Failed

Esto quiere decir que el grado de Similitud ha sido inferior a 0.50, tal y como se puede ver en el vídeo anterior. Y en el siguiente, cuando el "Speaker" sí que es reconocido, obtenemos un mayor grado de Similitud como se puede ver aquí.

Figura 30: Speaker Recognition Succeded

Os hemos puesto solo dos pruebas, la de correcto y la de incorrecto, pero lo hemos probado con muchos ficheros de audio, y el reconocimiento del speaker es bastante efectivo, lo que nos va a servir para probar después si la DeepFake de Voz que vamos a hacer en la siguiente parte es de suficiente calidad o no.

LoritoHunt

Por supuesto, una vez que se tienen todas piezas, ya podemos hacernos nuestra herramienta automática para localizar, dentro de un Big Data de Audios, a una persona. Con los algoritmos de Machine Learning para analizar la voz podemos seleccionar qué muestras etiquetadas son las que hay que comparar, y con el algoritmo de Diarization y Speaker Recognition, podemos acotar la búsqueda y tener un script en Python que busque al speaker en nuestro Data Lake.

Figura 31: Libros de Python para Pentesters y Hacking con Python
de Daniel Echeverri publicados en 0xWord.

Esto es algo que hace este ejemplo de LoritoHunt, para localizar de la forma más rápida en qué fichero de audio del Data Lake de Audios se ha localizado a este "speaker", lo que puede resolver investigaciones que largo tiempo no ha sido posible esclarecer.

Figura 32: LoritoHunt, para buscar a un speaker en el BigData de Audios

Con esto terminaríamos esta tercera prueba, de localizar a una persona mediante un proceso de Doxing que utiliza un modelo de Inteligencia Artificial lanzando sobre un Data Lake de Audios, y para que el proceso esté optimizado, utilizamos el análisis de voz hecho con los algoritmos de Machine Learning. Ahora nos toca pasar a la siguiente fase, que consiste en ver si a esta persona podremos clonarle la voz para hacer una DeepFake de Voz con solo estos audios recopilados de un Alexa.

¡Saludos Malignos!


Autor: Chema Alonso (Contactar con Chema Alonso)  


No hay comentarios:

Publicar un comentario