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