Ir al contenido principal

Inteligencia artificial tanto estrecha como general aplicada a la comparación forense de voces

Puede ver el video:

https://youtu.be/tP62_zOU38o

O bien continuar leyendo...

Hola, querida comunidad tecnológica. Hoy quiero compartirles una experiencia fascinante que tuve recientemente al enfrentarme a un problema específico con inteligencia artificial, y cómo logré resolverlo gracias a la asistencia de otras inteligencias artificiales, pero esta vez, de tipo general.

Para entender el contexto, debemos hablar de inteligencia artificial estrecha o débil. Esta es la IA que se enfoca en resolver un único problema específico. Un ejemplo clásico, y que muchos recordarán, es Deep Blue, la IA que en la década de los 90 venció al campeón mundial de ajedrez, Gary Kasparov.  En mi caso, la IA específica que estaba utilizando es un sistema basado en redes neuronales y una gran base de datos de voces. Su tarea es comparar dos archivos de audio y determinar si contienen registros vocales similares, es decir, si corresponden a la misma persona.

Representación simplificada de una red neuronal. En este caso, la entrada podría corresponder a segmentos de audio, las capas ocultas realizan el procesamiento complejo, y la salida indica la probabilidad de que las voces sean de la misma persona.

Para lograr esta comparación, mi sistema analiza segmentos de audio. Imaginemos una ventana de tiempo de 7 instantes hacia atrás, el instante actual y 7 instantes hacia adelante,  que se introducen en una red neuronal (simplificando, podríamos pensar en una red con 7+1+7=15 neuronas en la capa de entrada, aunque en realidad es mucho más compleja). La salida de la red neuronal es un coeficiente de similitud, un valor tipo coseno que oscila entre -1 y 1 (en la práctica, usualmente entre 0 y 1). Este coeficiente indica la probabilidad de que las voces en ambos archivos pertenezcan a la misma persona. Para simplificar, podríamos considerar que un coeficiente de 0.4 es bueno, 0.5 muy bueno, y 0.6 excelente.

El Dilema del Preprocesamiento: ¿Incluir los silencios o no incluirlos?

Aquí surgió mi problema. Al desarrollar un software que utiliza bibliotecas de terceros para la comparación forense de voces, me asaltó una duda crucial: ¿Realiza el programa un preprocesamiento de audio necesario para la comparación forense?  En particular, me preocupaba el manejo de los silencios en los archivos de audio.

Sabía que incluir los silencios en un archivo de audio podría introducir "ruido" en el sistema de comparación, especialmente en sistemas como el de mezcla de gaussianas. Mi inquietud era si este "ruido" también afectaría al sistema de redes neuronales que estaba utilizando.

Para ilustrar el problema, consideremos dos archivos de audio donde una persona dice exactamente lo mismo. En uno de los archivos, se han eliminado las porciones de silencio.  El silencio, aunque parezca inofensivo, puede contener ruido de fondo que, si bien es similar entre diferentes silencios, podría llevar al sistema a reconocer características similares entre hablantes diferentes, elevando el coeficiente de similitud de manera errónea. Por lo tanto, la eliminación del silencio se considera un procedimiento importante en el preprocesamiento de audio forense.

Consultando a la Sabiduría de la IA General: ChatGPT, DeepSeek y Gemini al Rescate

Previo a avocarme a resolver el problema de manera manual, decidí recurrir a la inteligencia artificial general. Estas IA, cada vez más sofisticadas, tienen la capacidad de resolver problemas complejos en contextos no predefinidos.  Pensé en ChatGPT, DeepSeek (una IA emergente) y Gemini en su versión de razonamiento (la versión más avanzada).  Mi objetivo era que estas IA me dieran una respuesta a un problema muy específico: ¿Elimina mi software los silencios entre palabras durante el preprocesamiento?

El prompt que utilicé, inicialmente, fue pasarles información sobre mi software y preguntarles directamente: ¿El programa elimina los silencios entre las palabras?  También añadí una pregunta implícita: si no los elimina, ¿debería eliminarlos manualmente?  Aquí los resultados:

ChatGPT: Me respondió concisamente: "No los elimina." Añadiendo: "Esta decisión es importante." Parecía sugerir que la eliminación manual era relevante.

DeepSeek:  También respondió "No los elimina." Pero fue más allá, proporcionándome código fuente para eliminar los silencios de los archivos de audio y afirmando que modelos como Titanet (en mi caso, Titanet Large, la versión más robusta) funcionan mejor con segmentos de voz activa limpia, es decir, sin silencios.

Gemini (versión razonamiento):  A diferencia de las otras, Gemini me respondió: "Es probable que Titanet Large sea suficientemente robusto y la eliminación manual no sea estrictamente necesaria."  Aunque reconoció que no podía ver el código interno de Titanet Large, sugirió que el modelo podría gestionar los silencios de manera efectiva.

El Experimento: La Prueba de Fuego con 300 Notas de Voz

Ante estas respuestas divergentes (dos votos a favor de eliminar los silencios y uno en contra), decidí realizar mi propio análisis experimental.  Conseguí 300 archivos de notas de voz de WhatsApp grabadas por mí mismo.  Creé dos bases de datos: una con los archivos originales y otra con los mismos archivos, pero con los silencios eliminados.

Tabla comparativa mostrando un ejemplo de los nombres de archivo en las dos bases de datos: archivos originales (izquierda) y archivos con silencios eliminados (derecha).

Luego, utilicé mi programa como una "caja negra" para comparar los archivos en ambas bases de datos y analizar los coeficientes de similitud.

Los Resultados: En esta oportunidad Gemini Tenía Razón

Observé que los coeficientes de similitud eran muy altos en ambos casos (alrededor de 0.90, considerado excelente).  En algunos casos, los coeficientes para los archivos con silencios eliminados eran ligeramente peores, pero la diferencia promedio entre ambas bases de datos era prácticamente nula.  Es decir, el sistema se comportaba de manera similar con o sin la eliminación de silencios.

Este resultado confirmó la predicción de Gemini, quien había sugerido que Titanet Large era probablemente lo suficientemente robusto como para no requerir la eliminación manual de silencios.

Un Ajuste al Prompt y la Confirmación Definitiva

Cabe mencionar que mi prompt original tenía un "sesgo" o "tendencia" (bias en inglés). Al preguntar si el programa eliminaba los silencios Y si yo debía eliminarlos manualmente, estaba direccionando la respuesta.  Decidí refinar el prompt y preguntar simplemente: ¿Elimina los silencios?

Las respuestas fueron las siguientes:

ChatGPT:  Continuó con su respuesta concisa: "No los elimina."  Y se quedó en silencio, sin añadir más información.

DeepSeek:  Mantuvo su postura de "No los elimina."  Pero reiteró su recomendación de eliminarlos, justificando que modelos como Titanet funcionan mejor con voz activa limpia.

Gemini (versión razonamiento):  Respondió: "No puedo ver el código interno de Titanet Large, pero es altamente probable que el modelo o la función GetEmbedded gestione los silencios entre palabras de forma efectiva. En conclusión, puedes asumir con bastante certeza y bastante confianza que el código de Titanet Large es el que más te va a ayudar a que el programa maneje o minimice el impacto de los silencios."

Conclusión: La IA General como Herramienta para Resolver Problemas Específicos

En este caso particular, Gemini, como inteligencia artificial general, respondió de manera correcta a una pregunta muy específica, incluso sin que se le proporcionara información adicional o se le dirigiera en una dirección particular con el prompt.  Mientras que ChatGPT y DeepSeek, aunque útiles, no lograron dar con la respuesta más precisa en este contexto.

Esta experiencia me demostró el potencial de las IA generales para resolver problemas técnicos complejos, incluso aquellos muy específicos relacionados con la inteligencia artificial estrecha.  Nos vemos en la próxima, y ¡gracias por acompañarme en esta exploración!

Comentarios