
No sólo estamos haciendo un sistema de verificación, también un sistema de seguridad contra personas externas o impostores.
No basta con dar una solución tan simple como si una grabación de audio se parece lo suficiente o no a un usuario como para garantizar que es él. Pongamos un ejemplo. He usado personajes famosos para atraer la atención, pero después hay una explicación más técnica para el caso de reconocimiento por voz.
Eddard Stark tiene un usuario en nuestro sistema y quiere reservar un puesto de laboratorio porque no le funciona la reverberación del ecualizador de LSED. Usa el login por voz, obteniendo un score final de 0.6. Como el score supera el umbral (a cero), se le permite acceder al sistema.
Al día siguiente, Tyrion Lannister decide que va a intentar reservar puesto de laboratorio haciéndose pasar por Eddard, simplemente para probar lo segura que es nuestra práctica.
Ambos hombres tienen una voz parecida, por lo que Tyrion obtiene una puntuación de 0.4. Como supera el umbral, se le da acceso, por lo que el sistema ha fallado. Tyrion es inmensamente rico (Have you ever heard the phrase "Rich as a Lannister?"), pero viendo el fracaso de la identificación biométrica, no invierte en nuestro proyecto. Desastre.
Cuando Tyrion hace login, es un impostor. Tenemos que tomar medidas contra él. No podemos luchar contra que su voz grabada sea parecida a la de Eddard, pero sí podemos compararla con otras voces.
Si Eddard hace login, obtendrá la máxima puntuación cuando comparemos con su propio modelo, y el parecido será menor al compararle con otras personas. Por otro lado, si Tyrion hace login, es posible que se parezca a Eddard y saque un 0.4, pero también es posible que se parezca a otras personas más que a Eddard (scores más altos). Si sucede esto, podríamos deducir que la grabación no es del usuario verdadero.
En realidad es más complicado, se hace una normalización del score de Eddard comparándose con otros scores obtenidos con otros modelos. Hay dos métodos para normalizar scores: znorm y tnorm. También existen combinaciones que aplican ambos (ztnorm o tznorm según el orden).
Ambas funcionan de manera parecida y devuelven el score del login normalizado. La diferencia reside en qué se basan para dicha normalización, pero en ambos casos los impostores son un grupo limitado y predeterminado.
- Znorm recibe un único modelo, el del usuario que hace login. Eddard Stark en el caso anterior. A continuación, una serie de grabaciones predeterminadas de otras personas se comparan con este modelo. Así se obtienen los scores de los impostores con tu modelo.
- Tnorm recibe una única grabación, la del usuario que hace login. A continuación se contrasta con una serie de modelos de las voces de los impostores y se consiguen unos scores.
Hay que recalcar que el uso de esta herramienta impulsará el score en caso de que el usuario sea verdadero, como en el siguiente ejemplo:
![]() |
| Ejemplo usando znorm. Los scores son el valor del final de cada línea |
En el ejemplo descrito antes en este post, la grabación de Tyrion sería comparada con otras voces. Al obtener scores más altos con otras voces que con la de Eddard, el 0.4 original se reduciría a un cero con poco o un valor negativo. Así es mucho más fácil evitar falsos positivos, haciendo al sistema más robusto.
Al principio pensábamos que no sería necesario introducir esta herramienta. Sin embargo, hemos visto que la mayoría de puntuaciones oscilaban en torno a 0.5 y que pensamos el parecido provenía en gran parte del ruido introducido por el micrófono (siempre usamos el mismo en desarrollo). La técnica de prevenir impostores resta dependencia con el micrófono, al suprimirse la parte común de los scores con otras personas.
Aún queda implementar esta funcionalidad en la plantilla de la versión final y hacer más pruebas con ella. En cualquier caso, podemos asegurar que no supondrá una tasa de acierto peor.
Si vemos que la parte del reconocimiento facial no es muy eficaz, pensaremos como implementar esta técnica adaptándola a ese campo.
Por último, los personajes son de Juego de Tronos. Actualización 5/4/2012: Al final no vamos a usar impostores para el reconocimiento de voz. Esto es porque hemos comprobado que serían necesarios bastantes tipos diferentes de impostores. Pensábamos usar una decena de voces, y no son suficientes para conseguir una mejora notable.

