Skip to content

Anotación de Audio

Segmenta archivos de audio y asigna etiquetas a regiones de tiempo con visualización de forma de onda.

Anotación de Audio

La herramienta de anotación de audio de Potato permite a los anotadores segmentar archivos de audio y asignar etiquetas a regiones de tiempo a través de una interfaz basada en forma de onda.

Funcionalidades

  • Visualización de forma de onda
  • Creación de segmentos basados en tiempo
  • Asignación de etiquetas a segmentos
  • Controles de reproducción con velocidad variable
  • Navegación con zoom y desplazamiento
  • Atajos de teclado
  • Caché de formas de onda del lado del servidor

Configuración Básica

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"

Opciones de Configuración

CampoTipoPredeterminadoDescripción
namestringRequeridoIdentificador único para la anotación
descriptionstringRequeridoInstrucciones mostradas a los anotadores
annotation_typestringRequeridoDebe ser "audio_annotation"
modestring"label"Modo de anotación: "label", "questions" o "both"
labelslistCondicionalRequerido para los modos label o both
segment_schemeslistCondicionalRequerido para los modos questions o both
min_segmentsinteger0Segmentos mínimos requeridos
max_segmentsintegernullSegmentos máximos permitidos (null = ilimitado)
zoom_enabledbooleantrueHabilitar controles de zoom
playback_rate_controlbooleanfalseMostrar selector de velocidad de reproducción

Configuración de Etiquetas

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

Modos de Anotación

Modo Etiqueta (Predeterminado)

Los segmentos reciben etiquetas de categoría:

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"

Modo Preguntas

Cada segmento responde preguntas dedicadas:

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

Modo Ambos

Combina el etiquetado con cuestionarios por segmento:

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

Configuración Global de Audio

Configura el manejo de formas de onda en tu archivo de configuración:

yaml
audio_annotation:
  waveform_cache_dir: "waveform_cache/"
  waveform_look_ahead: 5
  waveform_cache_max_size: 1000
  client_fallback_max_duration: 1800
CampoDescripción
waveform_cache_dirDirectorio para datos de forma de onda en caché
waveform_look_aheadNúmero de instancias próximas a pre-calcular
waveform_cache_max_sizeNúmero máximo de archivos de forma de onda en caché
client_fallback_max_durationMáximo de segundos para generación de forma de onda del lado del navegador (predeterminado: 1800)

Ejemplos

Diarización de Hablantes

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

Detección de Eventos Sonoros

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

Revisión de Transcripción

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"

Atajos de Teclado

TeclaAcción
SpaceReproducir/pausar
/ Retroceder/avanzar
[Marcar inicio de segmento
]Marcar fin de segmento
EnterCrear segmento
DeleteEliminar segmento seleccionado
1-9Seleccionar etiqueta
+ / -Acercar/alejar zoom
0Ajustar vista

Formato de Datos

Datos de Entrada

Tu archivo de datos debe incluir rutas de archivos de audio o URLs:

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

Configura el campo de audio:

yaml
item_properties:
  id_key: id
  text_key: audio_url

Formato de Salida

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

Para el modo de preguntas, los segmentos incluyen respuestas anidadas:

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

Formatos de Audio Soportados

  • MP3 (recomendado)
  • WAV
  • OGG
  • M4A

Mejores Prácticas

  1. Pre-cachear formas de onda - Usa caché del lado del servidor para conjuntos de datos grandes
  2. Habilitar control de reproducción - La velocidad variable ayuda con la segmentación precisa
  3. Usar atajos de teclado - Mucho más rápido que hacer clic
  4. Definir límites claros - Especifica qué constituye el inicio/fin de un segmento
  5. Elegir el modo apropiado - Usa "label" para clasificación, "questions" para anotación detallada
  6. Establecer límites de segmentos - Usa min_segments para asegurar cobertura