Skip to content
Tutorials4 min read

Sprecherdiarisierung annotieren

So baust du in Potato eine Aufgabe zur Sprechererkennung: interaktive Audio-Wellenformen, Marker mit Zeitstempeln, Zuweisung von Sprecherlabels und Messung der Inter-Annotator-Übereinstimmung.

Potato Team

Sprecherdiarisierung beantwortet die Frage, wer wann gesprochen hat. Dieses Tutorial zeigt, wie du Oberflächen baust, um Sprecherbeiträge zu annotieren, automatische Diarisierung zu korrigieren und Gespräche mit mehreren Sprechenden zu bearbeiten. Die vollständige Referenz der Audio-Schemata steht in der Quelldokumentation.

Was ist Sprecherdiarisierung?

Sprecherdiarisierung zerlegt Audio in Abschnitte, die jeweils zu einer sprechenden Person gehören. Sie kommt vor bei:

  • Transkription von Besprechungen
  • Auswertung von Callcenter-Gesprächen
  • Podcast-Produktion
  • Aufbereitung von Interviews
  • Gerichts- und Rechtsaufnahmen

Einfacher Aufbau für Diarisierung

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"

Sprechersegmente anlegen

Ablauf

  1. Audio abspielen oder in die Wellenform klicken, um zu navigieren
  2. Mit gedrückter Maustaste über die Wellenform ziehen, um einen Zeitbereich zu wählen
  3. Eine Zifferntaste drücken oder ein Sprecherlabel anklicken
  4. Das Segment bekommt Farbe und Label
  5. Grenzen durch Ziehen an den Kanten nachjustieren
  6. Weitermachen, bis das gesamte Audio segmentiert ist

Steuerung über die Tastatur

Potato bringt Tastenkürzel für die Wiedergabe mit, unter anderem für Abspielen und Pause sowie für das Navigieren.

Vorannotierte Diarisierung korrigieren

Häufig labelst du nicht bei null, sondern korrigierst die Ausgabe eines automatischen Diarisierers:

yaml
data_files:
  - "data/auto_diarized.json"

Datenformat:

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"}
  ]
}

Ausführliche Angaben zu den Sprechenden

Zusätzliche Metadaten zu jeder sprechenden Person erfassen:

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

Überlappende Sprache behandeln

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

Diarisierung von Besprechungen und Interviews

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

Ausgabeformat

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"
  }
}

Hinweise zur Diarisierung

  1. Erst hören: mach dich mit den Stimmen vertraut, bevor du annotierst
  2. Merkmale notieren: Tonhöhe, Akzent, Sprechweise
  3. Überlappungen einheitlich behandeln: leg die Vorgehensweise vorher fest
  4. Geschwindigkeit nutzen: schwierige Stellen langsamer abspielen
  5. Unsicherheit markieren: Unknown zu vergeben ist völlig in Ordnung

Nächste Schritte


Die vollständige Audio-Dokumentation steht unter Audio-Annotation.