Inspiration

Cada vez es más común que llamadas de estafa, suplantación de identidad o fraude en call centers usen voces generadas por inteligencia artificial. Nos dimos cuenta de que la mayoría de los detectores existentes se enfocan en analizar el timbre o la calidad acústica del audio, algo que las voces sintéticas modernas ya imitan con mucha precisión. Esto nos llevó a preguntarnos: ¿qué pasa si en lugar de analizar cómo suena la voz, analizamos cómo se comporta quien la usa durante una conversación? De ahí nació CQ: una forma de responder, en tiempo real, la pregunta "¿con quién estoy hablando realmente?"

What it does

CQ es una API que recibe el audio de una llamada telefónica (con el canal del caller y del callee separados) y devuelve si la voz del caller es sintética o humana, junto con un nivel de confianza. Lo hace de forma incremental: evalúa la llamada en distintos puntos (a los 25s, 40s, y al finalizar) y responde en cuanto tiene suficiente certeza, sin necesidad de esperar a que la llamada termine.

How we built it

Empezamos siguiendo literalmente las tres direcciones que sugiere el reto: detección acústica, comportamiento conversacional, y contenido semántico. En vez de asumir cuál funcionaría mejor, decidimos probarlas todas a fondo y dejar que los datos decidieran — no nuestra intuición.

Challenges we ran into

El primer desafío fue de infraestructura antes que de modelo: nuestro pipeline inicial de análisis semántico dependía de un LLM corriendo en un servidor prestado, y descubrimos que la transcripción con Whisper por sí sola tomaba hasta 90 segundos por llamada — un problema serio de latencia que tuvimos que diagnosticar y resolver antes de poder evaluar la señal en sí.

El segundo desafío, más interesante, fue de honestidad estadística. Entrenamos un clasificador de machine learning para la señal acústica y obtuvimos 97% de accuracy — un resultado que, en vez de celebrar, nos hizo sospechar. Sometimos ese modelo a una prueba simple: degradarlo con ruido de línea telefónica típico. El modelo colapsó, dando el mismo resultado sin importar el audio real que recibiera. Había memorizado una particularidad de cómo se generó nuestro dataset, no una característica real de la síntesis de voz — un fenómeno conocido como shortcut learning. Intentamos corregirlo entrenándolo con ruido incluido desde el principio, y el modelo simplemente encontró un atajo distinto.

Con la señal semántica pasó algo similar mediante un camino diferente: probamos tres arquitecturas de modelos de lenguaje completamente distintas —una local, una comercial, y una que desplegamos nosotros mismos en infraestructura propia— y las tres, en distintas corridas, dieron resultados inconsistentes entre sí. Eso nos dijo que el problema no era la herramienta, era que el contenido de las llamadas simplemente no daba suficiente información para esa señal.

De las tres señales, solo una sobrevivió cada prueba de rigor que le aplicamos: el tiempo que tarda el caller en reaccionar después de que el agente termina de hablar. Calibramos esa señal estadísticamente con datos reales, la validamos en llamadas nunca vistas durante la calibración, y la sometimos a las mismas pruebas de degradación que habían delatado a las otras señales — se mantuvo estable. Terminamos con un sistema deliberadamente simple: una sola señal, bien entendida, en vez de tres combinadas a medias.

Accomplishments that we're proud of

Más allá del sistema en sí, construimos y ejecutamos nosotros mismos un ataque real contra nuestro propio detector — demostrando, con audio real y no solo en teoría, exactamente qué tan fácil sería evadirlo si alguien conociera su lógica. También tradujimos nuestra matriz de errores a un modelo de costo de negocio real, para que la decisión del umbral no fuera solo estadística sino también económica.

What we learned

Aprendimos que un resultado sorprendentemente bueno merece más escrutinio, no menos. Aprendimos que "más señales" no es lo mismo que "mejor sistema" — profundidad auditada le gana a amplitud sin verificar. Y aprendimos, de forma muy concreta, los límites reales del machine learning aplicado a audio degradado: un modelo puede aprender perfectamente los datos que le diste, sin haber aprendido nada generalizable sobre el problema real.

What's next for CQ

El hallazgo más valioso técnicamente fue confirmar, con evidencia reproducible, que un clasificador entrenado puede parecer excelente y estar completamente equivocado en lo que aprendió. La única forma de saberlo fue someterlo a condiciones que nunca vio durante el entrenamiento — no confiar en el número de validación por sí solo. Esa disciplina, más que cualquier modelo específico, es lo que consideramos el resultado más importante de esta exploración.

Built With

Share this project:

Updates

Submission history