Skip to content

Annotation#

Deciphering the meaning of sounds within a recording can be a nuanced task. Typically, it involves someone carefully listening to the audio and choosing specific segments to highlight or describing the soundscape in a particular manner.

In soundevent, we call this process "Annotation." It's about giving a human interpretation to the sounds you've identified. You can annotate various sound objects like Clips, Events, and Sequences. Annotations, in simple terms, include Tags to categorize stuff, Notes for adding details or thoughts about what the sound means, and info about who did the annotating and when.

So, let's dive in and see how soundevent handles different types of annotated objects.

Sound Event Annotation#

A SoundEventAnnotation object encompasses all details about an annotated Sound Event, including a reference to the sound event itself (capturing the specific portion of sound), attached tags (for classifying the sound event), notes, information about the user who created the annotation, and the timestamp of its creation. Through annotations, a sound event gains a distinct interpretation, providing clarity and context to the sound.

erDiagram
    SoundEventAnnotation {
        UUID uuid
        datetime created_on
    }
    SoundEvent
    Tag
    Note
    User
    SoundEventAnnotation ||--|| SoundEvent : sound_event
    SoundEventAnnotation }|--o{ Tag : tags
    SoundEventAnnotation ||--o{ Note : notes
    SoundEventAnnotation }|--o| User : created_by

Sequence Annotation#

Moving beyond individual Sound Events, soundevent introduces Sequence Annotation, a type of annotation applied to sequences of sound events. A SequenceAnnotation object encapsulates details about the annotated sequence, referencing the particular sequence, attaching relevant tags, providing notes for additional insights or interpretations, and recording information about the annotating user and the creation timestamp. Sequence Annotation extends the interpretive layer to complex vocalization patterns, enhancing the understanding of structured sound sequences.

erDiagram
    SequenceAnnotation {
        UUID uuid
        datetime created_on
    }
    Sequence
    Tag
    Note
    User
    SequenceAnnotation ||--|| Sequence : sequence
    SequenceAnnotation }|--o{ Tag : tags
    SequenceAnnotation ||--o{ Note : notes
    SequenceAnnotation }|--o| User : created_by

Clip Annotations#

Expanding the scope of annotations, soundevent introduces Clip Annotations, providing a way to annotate entire audio clips. The ClipAnnotation object encompasses tags and notes, offering additional insights into the overall acoustic content of the clip. It retains information about the annotating user and the creation timestamp. Unlike sound event and sequence annotations, Clip Annotation goes further by storing the list of AnnotatedSoundEvents found within the clip, along with any AnnotatedSequences. This broader annotation approach allows for a comprehensive understanding of the audio content encapsulated by the clip.

erDiagram
    ClipAnnotation {
        UUID uuid
        datetime created_on
    }
    Clip
    Tag
    Note
    User
    SoundEventAnnotation
    SequenceAnnotation
    ClipAnnotation ||--|| Clip : clip
    ClipAnnotation }|--o{ Tag : tags
    ClipAnnotation ||--o{ Note : notes
    ClipAnnotation }|--o| User : created_by
    ClipAnnotation ||--|{ SoundEventAnnotation : sound_events
    ClipAnnotation ||--|{ SequenceAnnotation : sequences

Annotation Task#

When managing an annotation project, it's important to track which segments of the entire dataset have undergone annotation. In soundevent, we use the Clip as the fundamental unit for annotation tasks. Typically, annotators focus on inspecting and listening to an audio clip, completing the necessary annotations as part of the task. soundevent provides the AnnotationTask object, containing essential details about the annotation task, including the clip being annotated, information about the status of annotation (as indicated by Status Badges), and additional information like the creation date. This data not only facilitates tracking the progress of annotations but also helps identify tasks in need of review or attention.

erDiagram
    AnnotationTask {
        UUID uuid
        datetime created_on
    }
    StatusBadge {
        str state
        datetime created_on
    }
    Clip
    User
    AnnotationTask }|--|| Clip : clip
    AnnotationTask ||--o{ StatusBadge : status_badges
    StatusBadge }|--o{ User : owner

Annotation Project#

An Annotation Project object in soundevent consolidates all associated Annotation Tasks and the Clip Annotations made within that project. It's essential to note that Clip Annotations may encompass Sound Event Annotations and Sequence Annotations, making the Annotation Project a comprehensive repository of all annotated data related to the designated clips. In addition to task and annotation details, the annotation project is characterized by a name, serving to identify its purpose and content, and a description, providing additional insights into the project's objectives and goals. A critical component of the annotation project is the inclusion of annotation instructions. The term "completing an annotation task" gains clarity and relevance through explicit annotation instructions, guiding annotators on the expectations, methods, and adherence to project standards and goals.

In the context of an Annotation Project, it is crucial to specify a set of valid Tags that annotators can use. This practice ensures better control over the information attached to the sound objects within the project. The selection of these tags should align with the annotation goals, facilitating a more focused and purposeful annotation process.

erDiagram
    AnnotationProject {
        UUID uuid
        str name
        str description
        str instructions
        datetime created_on
    }
    Tag
    AnnotationTask
    ClipAnnotation
    AnnotationProject }|--o{ Tag : annotation_tags
    AnnotationProject }|--o{ AnnotationTask : tasks
    AnnotationProject }|--o{ ClipAnnotation : clip_annotations