Skip to content
Tutorials4 min read

Anotación de Diarización de Hablantes

Construye una tarea de identificación de hablantes con formas de onda de audio, marcadores de tiempo y asignación de etiquetas de hablante.

Potato Team·

Anotación de Diarización de Hablantes

La diarización de hablantes responde a la pregunta "¿quién habló cuándo?" Este tutorial cubre la construcción de interfaces para anotar turnos de habla, corregir diarización automática y manejar conversaciones con múltiples hablantes.

¿Qué es la Diarización de Hablantes?

La diarización de hablantes segmenta el audio en regiones homogéneas por hablante. Las aplicaciones incluyen:

  • Transcripción de reuniones
  • Análisis de centros de llamadas
  • Producción de podcasts
  • Procesamiento de entrevistas
  • Grabaciones judiciales/legales

Configuración Básica de Diarización

yaml
annotation_task_name: "Speaker Diarization"
 
data_files:
  - "data/conversations.json"
 
annotation_schemes:
  - annotation_type: audio_annotation
    name: speakers
    description: "Mark when each speaker talks"
    labels:
      - name: Speaker 1
        color: "#FF6B6B"
        keyboard_shortcut: "1"
      - name: Speaker 2
        color: "#4ECDC4"
        keyboard_shortcut: "2"
      - name: Speaker 3
        color: "#45B7D1"
        keyboard_shortcut: "3"
      - name: Overlap
        color: "#FFEAA7"
        keyboard_shortcut: "o"
      - name: Silence
        color: "#9CA3AF"
        keyboard_shortcut: "s"

Creación de Segmentos de Hablantes

Flujo de Trabajo

  1. Reproduce el audio o haz clic en la forma de onda para navegar
  2. Haz clic y arrastra en la forma de onda para seleccionar un rango de tiempo
  3. Presiona una tecla numérica o haz clic en una etiqueta de hablante
  4. El segmento se colorea y etiqueta
  5. Ajusta los límites arrastrando los bordes
  6. Continúa hasta que todo el audio esté segmentado

Controles de Teclado

Potato proporciona atajos de teclado integrados para el control de reproducción de audio, incluyendo reproducir/pausar y navegación.

Corrección de Diarización Pre-anotada

A menudo corregirás diarización automática:

yaml
data_files:
  - "data/auto_diarized.json"

Formato de datos:

json
{
  "id": "meeting_001",
  "audio_path": "/audio/meeting_001.wav",
  "auto_segments": [
    {"start": 0.0, "end": 3.5, "speaker": "Speaker 1"},
    {"start": 3.5, "end": 8.2, "speaker": "Speaker 2"},
    {"start": 8.2, "end": 12.0, "speaker": "Speaker 1"}
  ]
}

Información Detallada del Hablante

Captura metadatos adicionales del hablante:

yaml
annotation_schemes:
  - annotation_type: audio_annotation
    name: speakers
    labels:
      - name: Speaker A
        color: "#FF6B6B"
      - name: Speaker B
        color: "#4ECDC4"
      - name: Speaker C
        color: "#45B7D1"
      - name: Unknown
        color: "#9CA3AF"
 
  # Speaker characteristics
  - annotation_type: radio
    name: speaker_a_gender
    description: "Speaker A Gender"
    labels:
      - Male
      - Female
      - Unknown
 
  - annotation_type: text
    name: speaker_a_role
    description: "Speaker A Role (if identifiable)"
 
  - annotation_type: radio
    name: speaker_b_gender
    description: "Speaker B Gender"
    labels:
      - Male
      - Female
      - Unknown

Manejo de Habla Superpuesta

yaml
annotation_schemes:
  - annotation_type: audio_annotation
    name: speakers
    labels:
      - name: Speaker 1
        color: "#FF6B6B"
      - name: Speaker 2
        color: "#4ECDC4"
      - name: Overlap
        color: "#FFEAA7"

Diarización de Reuniones/Entrevistas

yaml
annotation_task_name: "Meeting Diarization"
 
data_files:
  - "data/meetings.json"
 
annotation_schemes:
  # Speaker turns
  - annotation_type: audio_annotation
    name: turns
    description: "Mark each speaker turn"
    labels:
      - name: Moderator
        color: "#EF4444"
        keyboard_shortcut: "m"
      - name: Participant 1
        color: "#3B82F6"
        keyboard_shortcut: "1"
      - name: Participant 2
        color: "#10B981"
        keyboard_shortcut: "2"
      - name: Participant 3
        color: "#F59E0B"
        keyboard_shortcut: "3"
      - name: Participant 4
        color: "#8B5CF6"
        keyboard_shortcut: "4"
      - name: Unknown
        color: "#6B7280"
        keyboard_shortcut: "u"
      - name: Overlap
        color: "#FCD34D"
        keyboard_shortcut: "o"
      - name: Silence/Noise
        color: "#D1D5DB"
        keyboard_shortcut: "s"
 
  # Speech type annotation
  - annotation_type: radio
    name: speech_type
    description: "Type of speech"
    labels:
      - Statement
      - Question
      - Response
      - Interruption
      - Backchannel
 
  # Overall quality
  - annotation_type: radio
    name: recording_quality
    description: "Overall recording quality"
    labels:
      - Excellent - All speakers clear
      - Good - Most speech understandable
      - Fair - Some difficulty
      - Poor - Significant issues

Formato de Salida

json
{
  "id": "meeting_001",
  "audio_path": "/audio/meeting_001.wav",
  "annotations": {
    "turns": [
      {
        "start": 0.0,
        "end": 5.2,
        "label": "Moderator",
        "attributes": {
          "speech_type": "Statement"
        }
      },
      {
        "start": 5.2,
        "end": 12.8,
        "label": "Participant 1",
        "attributes": {
          "speech_type": "Response"
        }
      },
      {
        "start": 11.5,
        "end": 12.8,
        "label": "Overlap"
      }
    ],
    "recording_quality": "Good - Most speech understandable"
  }
}

Consejos para la Diarización

  1. Escucha primero: Familiarízate con los hablantes antes de anotar
  2. Nota las características del hablante: Tono, acento, estilo de habla
  3. Maneja superposiciones consistentemente: Decide una estrategia de antemano
  4. Usa control de velocidad: Reduce la velocidad para secciones difíciles
  5. Marca la incertidumbre: Está bien usar "Unknown" cuando sea necesario

Próximos Pasos


Consulta /docs/features/audio-annotation para documentación completa de audio.