Any errors in the descriptions below are our own. These descriptions are based on published information at March 2004. The Annotation Graph Toolkit, or AGTK, employs a data model, the annotation graph, which is a directed acyclic graph where edges are labeled with feature-value pairs and nodes can be labeled with time offsets. Structural relationships can be expressed by convention in the edge labelling, but they are not exposed directly in the API as they are in NXT; instead, the focus is on the efficient handling of temporal information. AGTK is written in C++ and comes with a Java port. A query language is planned for AGTK but is not yet available. Although AGTK does not provide direct support for writing graphical user interfaces, it does include wrappers for Tcl/Tk and Python, two scripting languages in which writing such interfaces is easier than in C++ itself. The developers expect interfaces to call upon WaveSurfer, a compatible package, to display waveforms and play audio files. Atlas is intended to generalize the annotation graph and differs in two main ways. First, it allows richer relationships between annotation and signal. In annotation graphs, the only relationship between annotation and signal that is supported in the data handling is the timespan on the signal to which the annotation refers, given as a start and end time. NXT is similar to AGTK in this regard. Atlas, however, defines more generic signal regions which can refer to other properties besides the timing. For example, on a video signal, a region could pinpoint a screen location using X and Y coordinates. Second, Atlas explicitly represents structural relationships by allowing annotations to name a set of ``children'', without constraining how many ``parents'' an annotation may have. The framework for defining the semantics of this relationship and for specifying which types of annotations expect which other types as children, MAIA, is still under development. It has the potential to be very flexible, especially if the semantics of the parent-child relationship can vary depending on the types of data objects that they link. The Atlas data model is implemented in Java, and the developers plan both a query language and direct support for writing graphical user interfaces.

These paragraphs date from November 2004.

We're aware that MMAX2 shares some properties with NXT, but haven't had the time to write a definitive comparison. We believe the following information to be accurate. MMAX2 is more limited in the data structures that it can represent and the kinds of interfaces that can be created using it. The data model allows one to specify different types of annotation all of which point independently to the base documents, and links between annotations. The shared properties are at least: use of stand-off annotation; the representation of structural relationships above orthographic transcription; and the use of stylesheets to specify tool behaviour declaratively (but for MMAX2, this is serious, whereas for NXT, it's part of an experimental stylesheet engine that we wouldn't advise using in practice). Its free predecessor, MMAX, had a good reputation (by which we mean, we've met people who say they actually use it and haven't met people who say they tried it and couldn't make it work).

EMU also shares some properties with NXT, in that it allows time-aligned labelling of speech data including hierarchical decomposition across different tiers of labels and specifically supports query of the label sets. (This differentiates EMU from tools such as Anvil and TASX that are just coding tools without more general support, although given the availability of XML query languages to deal with their data formats, it's not clear that this really makes a difference.)


Last modified 04/13/06