Skip to content
Tutorials5 min read

Transkriptionsprüfung für Audio einrichten

So konfigurierst du in Potato eine Aufgabe zur Transkriptionsprüfung: Wellenformdarstellung, Wiedergabe mit variabler Geschwindigkeit und direkte Textkorrektur, um die ASR-Qualität zu bewerten.

Potato Team

Gute Trainingsdaten für ASR fangen meist damit an, dass ein Mensch den ersten Entwurf der Maschine prüft. Dieses Tutorial zeigt, wie du eine Oberfläche baust, in der Annotierende das Audio hören, die Wellenform sehen und das maschinell erzeugte Transkript korrigieren. Die Audio-Optionen dahinter stehen in der Dokumentation zur Audio-Annotation.

Was wir bauen

Eine Oberfläche mit:

  • Wellenformdarstellung
  • Wiedergabesteuerung (Abspielen, Pause, Geschwindigkeit)
  • bearbeitbarem Transkripttext
  • Qualitätsbewertung für das Audio
  • Kennzeichnung der Sicherheit bei unklaren Abschnitten

Grundkonfiguration

yaml
annotation_task_name: "Transcription Review"
 
data_files:
  - "data/transcripts.json"
 
item_properties:
  id_key: id
  text_key: asr_transcript
 
annotation_schemes:
  # Audio playback
  - annotation_type: audio_annotation
    name: audio_player
 
  # Corrected transcript
  - annotation_type: text
    name: corrected_transcript
    description: "Edit the transcript to match what you hear"
    rows: 4
    placeholder: "Type the corrected transcript..."
    label_requirement:
      required: true
 
  # Quality rating
  - annotation_type: radio
    name: audio_quality
    description: "Rate the audio quality"
    labels:
      - Clear
      - Slightly noisy
      - Very noisy
      - Unintelligible

Format der Beispieldaten

Lege data/transcripts.json an:

json
{"id": "audio_001", "audio_path": "/audio/recording_001.wav", "asr_transcript": "Hello how are you doing today"}
{"id": "audio_002", "audio_path": "/audio/recording_002.wav", "asr_transcript": "The weather is nice outside"}
{"id": "audio_003", "audio_path": "/audio/recording_003.wav", "asr_transcript": "Please call me back when your free"}

Audio-Annotation einrichten

Audio-Annotation läuft in Potato über den Typ audio_annotation in deinen Annotationsschemata. Der Player zeichnet die Wellenform und ergänzt die Wiedergabesteuerung von selbst, du musst das also nicht verkabeln:

yaml
annotation_schemes:
  - annotation_type: audio_annotation
    name: audio_player
    description: "Listen to the audio recording"

Der Audioplayer bringt Bedienelemente für Abspielen und Pause, für das Springen an eine Stelle und für die Geschwindigkeit schon mit.

Vollständige Transkriptionsoberfläche

yaml
annotation_task_name: "ASR Correction and Annotation"
 
data_files:
  - "data/asr_output.json"
 
item_properties:
  id_key: id
  text_key: hypothesis
 
annotation_schemes:
  # Audio player
  - annotation_type: audio_annotation
    name: audio_player
 
  # Main transcript correction
  - annotation_type: text
    name: transcript
    description: "Correct the transcript below"
    rows: 4
    rows: 4
    label_requirement:
      required: true
 
  # Speaker identification
  - annotation_type: radio
    name: num_speakers
    description: "How many speakers are in this recording?"
    labels:
      - "1 speaker"
      - "2 speakers"
      - "3+ speakers"
      - "Cannot determine"
 
  # Audio quality
  - annotation_type: radio
    name: quality
    description: "Overall audio quality"
    labels:
      - name: Excellent
        description: "Crystal clear, studio quality"
      - name: Good
        description: "Clear speech, minor background noise"
      - name: Fair
        description: "Understandable but noisy"
      - name: Poor
        description: "Very difficult to understand"
      - name: Unusable
        description: "Cannot transcribe accurately"
 
  # Issues checklist
  - annotation_type: multiselect
    name: issues
    description: "Select all issues present (if any)"
    labels:
      - Background noise
      - Overlapping speech
      - Accented speech
      - Fast speech
      - Mumbling/unclear
      - Technical audio issues
      - Non-English words
      - Profanity present
      - None
 
  # Confidence
  - annotation_type: likert
    name: confidence
    description: "How confident are you in your transcription?"
    size: 5
    min_label: "Guessing"
    max_label: "Certain"
 
annotation_guidelines:
  title: "Transcription Guidelines"
  content: |
    ## Your Task
    Listen to the audio and correct the ASR transcript.
 
    ## Transcription Rules
    - Transcribe exactly what is said
    - Include filler words (um, uh, like)
    - Use proper punctuation and capitalization
    - Mark unintelligible sections with [unintelligible]
    - Mark uncertain words with [word?]
 
    ## Special Notations
    - [unintelligible] - Cannot understand
    - [word?] - Uncertain about word
    - [crosstalk] - Overlapping speech
    - [noise] - Non-speech sound
    - [pause] - Significant silence

Annotation auf Wortebene

Für detaillierte Korrekturen auf Wortebene kannst du Span-Annotation neben den Textfeldern einsetzen:

yaml
annotation_schemes:
  - annotation_type: audio_annotation
    name: audio_player
 
  - annotation_type: text
    name: transcript
    rows: 4
 
  - annotation_type: span
    name: word_corrections
    description: "Mark words that needed correction"
    title: transcript
    labels:
      - name: corrected
        color: "#FCD34D"
        description: "Word was changed"
      - name: inserted
        color: "#4ADE80"
        description: "Word was added"
      - name: uncertain
        color: "#F87171"
        description: "Still not sure"

Transkription auf Segmentbasis

Bei langen Audiodateien kannst du deine Daten als Segmente mit Zeitangaben vorbereiten:

yaml
data_files:
  - "data/segments.json"
 
item_properties:
  id_key: id
  text_key: asr_text
 
annotation_schemes:
  - annotation_type: audio_annotation
    name: audio_player
 
  - annotation_type: text
    name: transcript
    rows: 4
    description: "Correct the transcript for this segment"

Datenformat mit Segmentzeiten:

json
{
  "id": "seg_001",
  "audio_path": "/audio/long_recording.wav",
  "start_time": 0.0,
  "end_time": 5.5,
  "asr_text": "Welcome to today's presentation"
}

Ausgabeformat

json
{
  "id": "audio_001",
  "audio_path": "/audio/recording_001.wav",
  "original_transcript": "Hello how are you doing today",
  "annotations": {
    "transcript": "Hello, how are you doing today?",
    "num_speakers": "1 speaker",
    "quality": "Good",
    "issues": ["None"],
    "confidence": 5
  },
  "annotator": "transcriber_01",
  "time_spent_seconds": 45
}

Qualitätskontrolle

Potato erfasst die Annotationszeit automatisch. Für die Qualitätskontrolle mischst du ein paar Aufmerksamkeitsprüfungen in deine Datendatei: Clips mit bekannter richtiger Antwort, an denen du siehst, wer gar nicht wirklich zuhört.

Wohin und wie Annotationen geschrieben werden, lässt sich konfigurieren:

yaml
output_annotation_dir: "annotation_output"
export_annotation_format: "json"

Hinweise zu Transkriptionsaufgaben

Ordentliche Kopfhörer und ein ruhiger Raum erledigen den größten Teil der Genauigkeit. Verlangsame das Audio für die Stellen, die du nicht ganz verstehst, und rechne mit mehr als einem Durchgang: hören, transkribieren, dann noch einmal prüfen. Transkribieren zehrt an der Konzentration, plane also regelmäßige Pausen ein.

Nächste Schritte


Vollständige Audio-Dokumentation unter Audio-Annotation.