While following the classical timeline model for annotating speech data, Praaline offers a key improvement: the option to define structural links between the annotation tiers, such as hierarchy, containment, attachment, controlled vocabularies etc. The annotation includes knowledge about the relationships between the different layers. An Annotation Level may contain any number of attributes, and relationships between Annotation Levels are encoded as part of the corpus structure. Praaline does not impose any specific set of Annotation Levels or attributes (sample sets are included to help users). Annotation attributes have associated data types, and may be marked as optional. The annotation structure is defined as part of the corpus definition (see previous section) and standard templates are provided (e.g. a template for a speech corpus that will be transcribed, aligned and analysed with DisMo, Prosogram and Promise).
Annotations may be imported, entered manually using an editor, or obtained automatically by applying annotation plug-ins. Praaline allows the user to apply a cascade of annotation plug-ins on the entire corpus, or on subsets of it. Heterogeneous annotation utilities can be applied sequentially on the corpus. For example, a compiled plug-in for feature extraction, may be followed by a Praat script for prosodic annotation, and then by a POS tagger and an NLP parser in Python, while finally an R script is used to perform a statistical analysis. Praaline handles the data conversions needed to allow such combinations.
The Annotation Level and Annotation Attribute can represent timeline annotations, and also ensure integrity of the data. It is often the case that congruent annotation tiers are used (e.g. in Praat) to represent multiple features of the same object (e.g. a syllable, and an indication of whether it was perceived as prominent or not, or whether it is disfluent). While practical for small amounts of data, this system quickly leads to problems when corpora get larger: e.g. discrepancies in tier boundaries that should had been aligned according to the model; or data incoherence between tiers that are supposedly linked (e.g. phones-syllables). Since these relationships are explicitly captured explicitly in Praaline, it is possible to check the data integrity of a set of corpus annotations, possibly correcting them automatically.
A spreadsheet-like editor allows the user to simultaneously edit attributes belonging to several different Annotation Levels. For example, in a corpus for prosodic studies, we may discern at least three levels: phones, syllables and tokens (words). Each level may have a number of associated Attributes (e.g. syllables may be described by several automatically extracted prosodic features). The editor allows the user to view and update a selection of attributes from each level; it is essentially a timeline display, synchronised with the sound signal. It is also possible to define bookmarks in the corpus, move directly to these points and add a descriptive note; XML-based files of bookmarks can be exchanged between researchers for quick collaboration. The tabular annotation editor can be seen below; its orientation is customisable: the user may select the vertical orientation (i.e. the timeline progressing from top to bottom, with annotation attributes shown in columns) or the horizontal orientation (i.e. the timeline progressing from left to right, with annotation attributes shown as rows); it is trivial to switch between the two orientations. Speech produced by different speakers is displayed on the same timeline and colours are used to encode the speaker; in this way Praaline facilitates the annotation of multi-party dialogues: the associated recordings may be separate per speaker, or combined.
Annotation editor plugins may provide additional functionality: as an example, in the above figure, a small plugin can help the user apply the disfluency annotation protocol outlined in Chapter 3 (by selecting a series of tokens and the desired disfluency category, the plugin adds the appropriate codes). Praaline also includes a Batch Editor, which allows the user to find all distinct tags used in a specified annotation level/attribute combination and modify them in one operation; this feature is handy to correct annotation errors resulting from typos that inevitably arise as a corpus gets bigger. Furthermore, Praaline provides a way to compare annotations, visualise the differences and reconcile them; this can be useful in cases where different annotators have worked on the same data independently, and later need to merge their annotations.
The Annotation Level – Annotation Attribute data model translates directly into a relational SQL database. Each Annotation Level is a table, and Annotation Attributes are columns. Praaline uses this system to provide querying functionality (see below). In addition to the possibilities offered by the user interface and through scripting, an advanced user can directly query Praaline’s SQL database. It is important to note that the schema is dynamic and adapted to each corpus definition (with the exception of system tables that are always present). Finally, it is envisaged that this corpus metadata and annotation database can be linked to web interface to provide outside users with limited access to the corpus.