Diario
IngenieríaPublicado el 2026-02-12·11 min de lectura

Diarización de hablantes en un teléfono: deep dive

Cómo corremos diarización de hablantes end-to-end en tiempo real con 4 W de presupuesto — sin subir un solo segundo de audio.

El problema

La diarización responde "¿quién habló cuándo?". Es la diferencia entre un transcript que es un muro de texto y uno que es una conversación. Sin diarización, "vamos a lanzar" no tiene dueño; con ella, aterriza en un nombre concreto y se convierte en una tarea.

La pipeline

  1. VAD (detección de actividad vocal) — la puerta de todo lo demás. Solo gastamos ciclos cuando hay habla real. Nuestro VAD es una CNN de 200 KB sobre log-mel, ejecutándose cada 10 ms.
  2. Embedding de hablante — extrae un vector de 192-dim por segmento vocalizado. Usamos un modelo tipo ECAPA-TDNN destilado a 12 MB int8.
  3. Clustering online — aglomerativo con refinamiento. La nueva evidencia actualiza etiquetas pasadas.
  4. Suavizado — alternancias cortas de menos de 400 ms se fusionan para no parpadear en UI.

Lo difícil en móvil

  • El embedding tiene que caber junto al ASR y a un summarizer LLM en el mismo presupuesto de memoria.
  • El clustering tiene que ser incremental — no podemos re-agrupar la reunión entera en cada paso. Usamos un clusterer aglomerativo online con memoria constante y distancia coseno.
  • La UI no puede parpadear cuando se refinan las etiquetas. Animamos el cambio con un cross-fade de 200 ms en vez de cambiar el texto.
  • El habla solapada (dos personas a la vez) rompe la suposición de etiqueta única. Marcamos esos tramos con el hablante dominante y los etiquetamos como "overlap" para que el resumen baje su peso.

A dónde llegamos

Un modelo de embedding de 12 MB, un algoritmo de clustering en streaming con ventana de 6 s y una vista de transcript que anima los cambios de etiqueta en lugar de saltar. La latencia mediana end-to-end hasta la primera etiqueta es 950 ms en iPhone 15 Pro y 1.6 s en Pixel 8a.

Lo que aún duele

  • Voces parecidas — mismo registro, mismo acento, mismo género — confunden al embedding los primeros 30 s. Lo exponemos como un aviso "aún aprendiendo voces" en la UI.
  • El cross-talk en salas ruidosas degrada bruscamente. Estamos probando una pre-etapa diminuta de separación de fuentes en el dispositivo.

Recibe nuevos artículos

Te avisaremos cuando publiquemos algo nuevo.

Suscribirse