Skip to content
Tutorials5 min read

Impostare la revisione di una trascrizione audio

Come configurare in Potato un task di revisione delle trascrizioni audio, con forma d'onda, riproduzione a velocità variabile e correzione del testo in linea per valutare la qualità dell'ASR.

Potato Team

I buoni dati di addestramento per l'ASR di solito partono da una persona che controlla la prima bozza della macchina. Questo tutorial mostra come costruire un'interfaccia in cui gli annotatori ascoltano l'audio, vedono la forma d'onda e correggono la trascrizione generata automaticamente. Per le opzioni audio su cui si appoggia, vedi la documentazione sull'annotazione audio.

Che cosa costruiamo

Un'interfaccia con:

  • Visualizzazione della forma d'onda
  • Controlli di riproduzione (play, pausa, regolazione della velocità)
  • Testo della trascrizione modificabile
  • Un giudizio sulla qualità dell'audio
  • Un'indicazione di confidenza per i segmenti incerti

Configurazione di base

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

Formato dei dati di esempio

Crea data/transcripts.json:

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

Impostare l'annotazione audio

L'annotazione audio in Potato usa il tipo audio_annotation dentro gli schemi di annotazione. Il player disegna da sé la forma d'onda e aggiunge i controlli di riproduzione, quindi non devi collegarli tu:

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

Il player audio ha già i controlli per play e pausa, per spostarsi dentro il clip e per regolare la velocità.

Interfaccia di trascrizione completa

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

Annotazione a livello di parola

Per correzioni puntuali parola per parola, puoi affiancare ai campi di testo l'annotazione a span:

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"

Trascrizione per segmenti

Per i file audio lunghi puoi preparare i dati come segmenti, con i tempi:

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"

Formato dei dati con i tempi dei segmenti:

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

Formato di output

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
}

Controllo di qualità

Potato registra da solo il tempo di annotazione. Per il controllo di qualità, mescola nel file di dati qualche elemento di controllo dell'attenzione: clip con una risposta corretta nota, che ti fanno individuare gli annotatori che in realtà non stanno ascoltando.

Puoi configurare dove e come vengono scritte le annotazioni:

yaml
output_annotation_dir: "annotation_output"
export_annotation_format: "json"

Consigli per i task di trascrizione

Cuffie decenti e una stanza silenziosa fanno gran parte del lavoro sull'accuratezza. Rallenta l'audio nei punti che non afferri bene e metti in conto più di un passaggio: ascoltare, trascrivere, poi tornare indietro a verificare. Trascrivere sfianca, quindi prevedi pause regolari.

Prossimi passi


Documentazione audio completa su Annotazione Audio.