Skip to content

Annotation audio

Segmentez des fichiers audio et attribuez des étiquettes aux régions temporelles avec visualisation de forme d'onde.

Annotation audio

L'outil d'annotation audio de Potato permet aux annotateurs de segmenter des fichiers audio et d'attribuer des étiquettes aux régions temporelles via une interface basée sur les formes d'onde.

Fonctionnalités

  • Visualisation de forme d'onde
  • Création de segments temporels
  • Attribution d'étiquettes aux segments
  • Contrôles de lecture avec vitesse variable
  • Navigation par zoom et défilement
  • Raccourcis clavier
  • Mise en cache côté serveur des formes d'onde

Configuration de base

yaml
annotation_schemes:
  - name: "speakers"
    description: "Mark when each speaker is talking"
    annotation_type: "audio_annotation"
    labels:
      - name: "Speaker 1"
        color: "#3B82F6"
      - name: "Speaker 2"
        color: "#10B981"

Options de configuration

ChampTypeDéfautDescription
namestringObligatoireIdentifiant unique de l'annotation
descriptionstringObligatoireInstructions affichées aux annotateurs
annotation_typestringObligatoireDoit être "audio_annotation"
modestring"label"Mode d'annotation : "label", "questions" ou "both"
labelslistConditionnelObligatoire pour les modes label ou both
segment_schemeslistConditionnelObligatoire pour les modes questions ou both
min_segmentsinteger0Nombre minimum de segments requis
max_segmentsintegernullNombre maximum de segments autorisés (null = illimité)
zoom_enabledbooleantrueActiver les contrôles de zoom
playback_rate_controlbooleanfalseAfficher le sélecteur de vitesse de lecture

Configuration des étiquettes

yaml
labels:
  - name: "speech"
    color: "#3B82F6"
    key_value: "1"
  - name: "music"
    color: "#10B981"
    key_value: "2"
  - name: "silence"
    color: "#64748B"
    key_value: "3"

Modes d'annotation

Mode étiquette (par défaut)

Les segments reçoivent des étiquettes de catégorie :

yaml
annotation_schemes:
  - name: "emotion"
    description: "Label the emotion in each segment"
    annotation_type: "audio_annotation"
    mode: "label"
    labels:
      - name: "happy"
        color: "#22C55E"
      - name: "sad"
        color: "#3B82F6"
      - name: "angry"
        color: "#EF4444"
      - name: "neutral"
        color: "#64748B"

Mode questions

Chaque segment répond à des questions dédiées :

yaml
annotation_schemes:
  - name: "transcription"
    description: "Transcribe each segment"
    annotation_type: "audio_annotation"
    mode: "questions"
    segment_schemes:
      - name: "transcript"
        annotation_type: "text"
        description: "Enter the transcription"
      - name: "confidence"
        annotation_type: "likert"
        description: "How confident are you?"
        size: 5

Mode combiné

Combine l'étiquetage avec des questionnaires par segment :

yaml
annotation_schemes:
  - name: "detailed_diarization"
    description: "Label speakers and add notes"
    annotation_type: "audio_annotation"
    mode: "both"
    labels:
      - name: "Speaker A"
        color: "#3B82F6"
      - name: "Speaker B"
        color: "#10B981"
    segment_schemes:
      - name: "notes"
        annotation_type: "text"
        description: "Any notes about this segment?"

Configuration audio globale

Configurez la gestion des formes d'onde dans votre fichier de configuration :

yaml
audio_annotation:
  waveform_cache_dir: "waveform_cache/"
  waveform_look_ahead: 5
  waveform_cache_max_size: 1000
  client_fallback_max_duration: 1800
ChampDescription
waveform_cache_dirRépertoire pour les données de formes d'onde mises en cache
waveform_look_aheadNombre d'instances à venir à pré-calculer
waveform_cache_max_sizeNombre maximum de fichiers de formes d'onde en cache
client_fallback_max_durationDurée maximale en secondes pour la génération côté navigateur (défaut : 1800)

Exemples

Diarisation de locuteurs

yaml
annotation_schemes:
  - name: "diarization"
    description: "Identify who is speaking at each moment"
    annotation_type: "audio_annotation"
    mode: "label"
    labels:
      - name: "Interviewer"
        color: "#8B5CF6"
        key_value: "1"
      - name: "Guest"
        color: "#EC4899"
        key_value: "2"
      - name: "Overlap"
        color: "#F59E0B"
        key_value: "3"
    zoom_enabled: true
    playback_rate_control: true

Détection d'événements sonores

yaml
annotation_schemes:
  - name: "sound_events"
    description: "Mark all sound events"
    annotation_type: "audio_annotation"
    labels:
      - name: "speech"
        color: "#3B82F6"
      - name: "music"
        color: "#10B981"
      - name: "applause"
        color: "#F59E0B"
      - name: "laughter"
        color: "#EC4899"
      - name: "silence"
        color: "#64748B"
    min_segments: 1

Revue de transcription

yaml
annotation_schemes:
  - name: "transcription_review"
    description: "Review and correct the transcription for each segment"
    annotation_type: "audio_annotation"
    mode: "questions"
    segment_schemes:
      - name: "transcript"
        annotation_type: "text"
        description: "Enter or correct the transcription"
        textarea: true
      - name: "quality"
        annotation_type: "radio"
        description: "Audio quality"
        labels:
          - "Clear"
          - "Noisy"
          - "Unintelligible"

Raccourcis clavier

ToucheAction
EspaceLecture/pause
/ Reculer/avancer
[Marquer le début du segment
]Marquer la fin du segment
EntréeCréer le segment
SupprSupprimer le segment sélectionné
1-9Sélectionner l'étiquette
+ / -Zoom avant/arrière
0Ajuster la vue

Format de données

Données d'entrée

Votre fichier de données doit inclure des chemins ou URL de fichiers audio :

json
[
  {
    "id": "audio_001",
    "audio_url": "https://example.com/audio/recording1.mp3"
  },
  {
    "id": "audio_002",
    "audio_url": "/data/audio/recording2.wav"
  }
]

Configurez le champ audio :

yaml
item_properties:
  id_key: id
  text_key: audio_url

Format de sortie

json
{
  "id": "audio_001",
  "annotations": {
    "diarization": [
      {
        "start": 0.0,
        "end": 5.5,
        "label": "Interviewer"
      },
      {
        "start": 5.5,
        "end": 12.3,
        "label": "Guest"
      },
      {
        "start": 12.3,
        "end": 14.0,
        "label": "Overlap"
      }
    ]
  }
}

En mode questions, les segments incluent des réponses imbriquées :

json
{
  "start": 0.0,
  "end": 5.5,
  "transcript": "Hello and welcome to the show.",
  "quality": "Clear"
}

Formats audio supportés

  • MP3 (recommandé)
  • WAV
  • OGG
  • M4A

Bonnes pratiques

  1. Pré-cachez les formes d'onde - Utilisez la mise en cache côté serveur pour les grands ensembles de données
  2. Activez le contrôle de lecture - La vitesse variable aide à la segmentation précise
  3. Utilisez les raccourcis clavier - Beaucoup plus rapide que le clic
  4. Définissez des limites claires - Spécifiez ce qui constitue le début/fin d'un segment
  5. Choisissez le mode approprié - Utilisez "label" pour la classification, "questions" pour l'annotation détaillée
  6. Fixez des limites de segments - Utilisez min_segments pour assurer la couverture