Diarización de hablantes
También: etiquetas de hablante
Actualizado el
Definición
La diarización de hablantes es el proceso de averiguar quién habló y cuándo en una grabación, para poder etiquetar una transcripción por hablante. Responde a “¿quién dijo esto?” y no a “¿qué se dijo?”.
La diarización es un modelo distinto del reconocimiento de voz. Escucha los cambios de voz, agrupa los segmentos que suenan como la misma persona y asigna a cada uno una etiqueta, normalmente Hablante 1 y Hablante 2 hasta que se le asocia un nombre. Combinada con una transcripción, produce el formato habitual de las notas de reunión, con cada línea atribuida.
Es una función de transcripción, no de dictado. Cuando dictas, hay un solo hablante y eres tú, así que a una herramienta de dictado la diarización no le sirve de nada y no se la debería juzgar por no tenerla. Cuando transcribes una reunión, una entrevista o un pódcast, es la diferencia entre una transcripción y un muro de texto.
Por qué es difícil
Dos personas con voces parecidas, una persona cuya voz cambia con un resfriado, el habla superpuesta y un micrófono de portátil que aplana a todos en el mismo sonido ambiente: todo eso desbarata la agrupación. El número de hablantes suele adivinarse en lugar de conocerse. Los mejores sistemas funcionan bien con audio limpio y por turnos, como un pódcast, y mucho peor en una reunión real en la que tres personas se pisan. Cuenta con corregir etiquetas a mano.
Qué herramientas la tienen
Los transcriptores de reuniones como Otter.ai construyen su producto en torno a ella. Los transcriptores de archivos como MacWhisper ofrecen etiquetas de hablante en las grabaciones. Las herramientas de dictado, en general, no, porque en ese trabajo nunca hay dos hablantes. Si la diarización está en tu lista de requisitos, lo que buscas es un transcriptor.
Cómo añadir etiquetas de hablante a una grabación en tu Mac
El kit de herramientas de código abierto pyannote.audio hace la diarización de hablantes en local, en tu ordenador. Te dice quién habló y cuándo, con la hora de inicio y de fin de cada turno. No produce las palabras, así que combinas su resultado con una transcripción de un reconocedor de voz.
Los pasos de abajo usan el pipeline community, que se publica con licencia CC-BY-4.0 y necesita una cuenta gratuita de Hugging Face para descargarlo.
- Asegúrate de que ffmpeg está instalado, por ejemplo con: brew install ffmpeg
- Instala el kit en Terminal con: pip install pyannote.audio
- Inicia sesión en Hugging Face y acepta las condiciones de uso en la página de pyannote/speaker-diarization-community-1.
- Crea un token de acceso de Hugging Face en hf.co/settings/tokens.
- En Python, carga el pipeline con Pipeline.from_pretrained, pasando el nombre del pipeline y tu token, y luego llámalo con tu archivo de audio.
- Recorre el campo speaker_diarization del resultado para leer cada turno con su hora de inicio, su hora de fin y su etiqueta de hablante.
- Si sabes cuántas personas hablaron, pasa num_speakers al llamar al pipeline. Si solo conoces un rango, pasa min_speakers y max_speakers.
¿Pueden Whisper o Parakeet distinguir a los hablantes?
No. Los dos son modelos de reconocimiento de voz y ninguno está hecho para etiquetar hablantes. La ficha del modelo Whisper dice que los modelos no se han evaluado de forma rigurosa en clasificación ni diarización de hablantes. La ficha de NVIDIA para Parakeet TDT 0.6B v2 no incluye la diarización de hablantes entre sus capacidades.
El artículo de Whisper recoge una peculiaridad relacionada. Los primeros modelos tendían a escribir suposiciones plausibles pero casi siempre incorrectas sobre los nombres de los hablantes, porque muchas transcripciones de entrenamiento incluían el nombre de la persona que hablaba. Los autores eliminaron ese comportamiento con un ajuste fino sobre transcripciones sin anotaciones de hablante. Si una transcripción hecha solo con un modelo de reconocimiento contiene nombres de hablantes, no te fíes de ellos.
Cómo se mide la precisión de la diarización
La métrica estándar es la tasa de error de diarización (DER), expresada como porcentaje, donde menos es mejor. Suma tres tipos de error: la falsa alarma, cuando se indica voz que no había; la detección fallida, cuando hay voz real que no se atribuye a nadie; y la confusión de hablante, cuando la voz se atribuye a la persona equivocada.
Igual que con la tasa de error por palabra, las reglas de puntuación cambian la cifra. Algunas evaluaciones perdonan un breve margen de tiempo alrededor de cada cambio de hablante, y otras se saltan la voz superpuesta. Las pruebas de pyannote indican que no usan ningún margen de tolerancia ni se saltan la voz superpuesta, que es la configuración más estricta. Comprueba estas dos decisiones antes de comparar cifras de DER de fuentes distintas.
Preguntas que hace la gente.
¿Qué significa diarización en transcripción?
Etiquetar una transcripción según quién hablaba. Un modelo de diarización detecta los cambios de voz y agrupa los segmentos por hablante, para que la transcripción de una reunión se lea como una conversación y no como un único bloque.
¿El software de dictado etiqueta a los hablantes?
Casi nunca, porque en el dictado hay un solo hablante. Las etiquetas de hablante son una función de las herramientas de transcripción de reuniones y de archivos. Si las necesitas, elige un transcriptor; si necesitas dictado en directo, una app de dictado.
¿Hace Whisper diarización de hablantes?
No. Whisper transcribe palabras, y su ficha del modelo dice que no se ha evaluado de forma rigurosa en diarización de hablantes. Para obtener etiquetas de hablante tienes que usar un modelo de diarización aparte, como el pipeline de código abierto pyannote.audio, y combinar sus marcas de tiempo con la transcripción.
¿Qué es la tasa de error de diarización?
La tasa de error de diarización (DER) es la medida de precisión estándar para el etiquetado de hablantes, donde menos es mejor. Combina las falsas alarmas, la voz no detectada y la voz atribuida al hablante equivocado.
¿Puede funcionar la diarización de hablantes sin conexión en un Mac?
Sí. El pipeline community de pyannote.audio, de código abierto, funciona en local en tu ordenador, y una vez descargado se puede usar sin conexión a internet.