User interface

The browser-based user interface for APLS is based on LaBB-CAT version 20250430.1502.1 However, starting with version 0.3.0, APLS’s user interface has been modified to diverge from the main trunk of LaBB-CAT development.2 The modified UI provides a user experience that is more accessible, more consistent across pages, more streamlined, more tightly interwoven with the APLS documentation, and more customizable by the end-user. It is informed by Dan Villarreal’s nearly 10 years of experience using and maintaining LaBB-CAT corpora, teaching students how to use LaBB-CAT, and writing this documentation website with Jack Rechsteiner.

The source code for the APLS UI is available on GitHub here. This repository is a fork of the main trunk of LaBB-CAT UI development, maintained by Robert Fromont of NZILBB. As of APLS version 0.3.0, APLS’s UI code is at commit fdd5195, which is up-to-date with commit 5da4b06 of the LaBB-CAT UI repository. You can view code differences here.

LaBB-CAT’s entire codebase is spread across multiple repositories:

This page is a non-exhaustive list of these user interface modifications.

On this page
  1. Layer picker
    1. All pages
    2. Individual Transcript pages
    3. Transcripts and Search results pages
  2. Individual Transcript pages
    1. Header tabs
    2. Transcript body
  3. Search page
    1. Search matrix
    2. Participant and transcript filter
    3. Search options
  4. Search results page
  5. Transcripts and Participants pages
  6. Process with Praat page
  7. Miscellaneous

Layer picker

The layer picker appears in various forms on several pages.

The layer picker has been updated on all these pages, with some page-specific changes.

All pages

These changes are exemplified by the layer picker on the Search page.

  • More icons: Previously, the layer picker only displayed icons for layers’ alignment. Now, icons correspond to data type and vertical peers as well.
    • Hideable: Because this means more visual clutter, these icons can be toggled on and off by clicking Hide layer icons. This setting persists if you visit more pages in the same browser tab.
    • More intuitive alignment: For technical reasons relating to the annotation graph data structure, turn, word, and segment have “Sub-interval” alignment even though intuitively they should have “Complete interval” alignment. The layer picker now shows them as having “Complete interval” alignment.
  • Docpage links: The new controls bar at the bottom of the layer picker not only contains controls for showing/hiding information like layer icons, it also links to relevant documentation pages.
  • Cursor: Previously, it wasn’t obvious that you could hover over a layer/attribute name to bring up a longer description. Now, the mouse pointer changes to a “help” cursor to cue users to this fact.
  • Bugfix: On the Search and Transcript page, most layer checkboxes are hidden when the page loads, with batches of checkboxes made visible by selecting projects. Previously, if you selected a project, selected a layer in the project, then deselected the project, that layer’s checkbox would disappear. Now, checkboxes for selected layers don’t disappear even if their project is deselected.

Individual Transcript pages

Comparison: Transcript pages

The layer picker when first loading the CB01interview.eaf Transcript page, clicking the Layers tab, and selecting the imported project

In addition to the baseline changes, the layer picker on the Transcript page has:

  • Annotation counts: The layer picker displays the number of annotations on that layer in that transcript.
    • Hideable: Like the layer icons, annotation counts can be toggled on and off, and this setting persists within a browser tab.
  • Empty layers: The layer picker shows empty layers (those with 0 annotations in that transcript) in gray, with a checkbox that is grayed-out (cannot be selected) and icons that are grayed-out.
  • Preselected layers: The word layer is always shown by default and cannot be un-shown. Previously, the layer picker omitted word on the Transcript page. Now, the layer picker makes it clearer which layer users are seeing by showing the word layer with a checkbox that is selected and grayed-out (cannot be deselected).
    • More explicit if empty: If a preselected layer is empty in that transcript, the layer picker now pops open a message to the user.

Transcripts and Search results pages

Comparison: Transcripts/Search results pages

The layer picker when selecting Export Formatted on the Transcripts page, or CSV Export on the Search results page

The layer picker appears on the Transcripts page when selecting Export Formatted, and on the Search results page when selecting CSV Export or Utterance Export. In the first two cases, the layer picker allows the user to select participant and transcript attributes in addition to layers. (The third has the same changes as the baseline.) As a result, on top of the baseline changes, these layer pickers have additional changes to how attributes are displayed:

  • Attribute prefixes: In LaBB-CAT, most attribute names start with the prefix participant_ or transcript_, which are visible when exporting these attributes to CSV. Previously, the layer picker hid these prefixes to avoid visual clutter, but this could be confusing when comparing to an exported CSV file. Now, the layer picker on these pages gives users the option to toggle attribute prefixes on and off by clicking Hide attribute prefixes (hidden by default). As with layer icons and annotation counts, this setting persists within a browser tab.
  • Real attribute names: Previously, the layer picker displayed “Name” for the participant and transcript attributes, since these were under columns labeled “Participant” and “Transcript”. In keeping with a move toward representing attribute and layer names consistently across contexts (UI and documentation), the layer picker now displays “participant” and “transcript”.
  • Attribute tooltips: Hovering over layer/attribute names brings up a tooltip with information about the layer/attribute. Previously, layer tooltips had longer descriptions but attribute tooltips only had attributes’ display titles. Now, attribute tooltips have longer descriptions as well.
  • Layer icons: Previously, icons were only visible on the Transcript and Search pages, due to the wider layer picker on the Transcript and Search results pages. Now, because icons can be hidden, they are visible (and hidden by default) on these pages as well.

Individual Transcript pages

The comparison images in this section come from the HD05interview2.eaf Transcript page.

Header tabs

Comparison

Header tabs on the Transcript page. Attributes is the rightmost tab in the old UI (the media player is hidden in subsequent comparisons)

  • Attributes tab

    Comparison

    The Transcript page Attributes tab

    • More attributes: Previously, corpus and episode were visible on Transcript attributes pages, but not on the Transcript page itself. This page now displays these attributes.
    • Real attribute names: Previously, the Attributes tab only displayed attributes’ display titles, with names in a tooltip. Now, this tab displays attribute names.
      • Hideable: These names can be toggled on and off by clicking Hide attribute names. This setting persists if you visit more pages in the same browser tab.
      • Attribute prefixes: As in the layer picker, the transcript_ prefix is hidden by default but can be shown by unchecking Hide attribute prefixes. When attribute names are hidden, this checkbox is grayed-out. Like Hide attribute names, this setting persists within a browser tab.
  • Participants tab

    Comparison

    The Transcript page Participants tab

    • More explicit: Previously, participant names were links to that participant’s attributes page. Now, the link is a more explicit button. In addition, the fact that bold styling indicates the transcript’s main participant is now made explicit.
    • New functionality: The new List Transcripts button is a shortcut to List Transcripts on the Participants page.
  • Layers tab
    • Improved layer picker: See above.
  • Search tab
  • Export tab

    Comparison

    The Transcript page Export tab

    • More consistent: Label and icon now mirror Export Formatted on the Transcripts page.
    • More explicit about which layers will be exported (updated when the user selects different layers in the layer picker).

Transcript body

  • More consistent turn alignment, including overlap vs. non-overlap turns

    Comparison

    Four turns in the transcript starting at around 16 seconds

  • Segment labels don’t crowd together

    Comparison

    The start of a turn around 31 seconds, with the segment layer switched on

  • Word menu: Options relabeled to be more descriptive and rearranged to put commonly-used options higher. The clicked-on word is styled to make it more obvious which word has been selected.

    Comparison

    The menu that appears when clicking on a word early in the transcript

    • Don’t clobber result highlights: The word menu allows users to create a permalink by selecting Utterance or Word. Previously, this would remove any highlighting of search results. Now, permalinking doesn’t remove this highlighting.

Search page

  • Reorganized layout: By putting filters and options in tabs, the Search page directs users toward its central functionality: specifying patterns to search the corpus for via the search matrix.

    Comparison

    The Search page when first loaded

Search matrix

  • Don’t clobber matrix: Previously, if you specified a search matrix (selected some layers, entered text in pattern input fields, etc.) then selected a participant or transcript filter, the search matrix would be reset when you returned to the Search page. This could lead to frustration if the participant or transcript filter was an afterthought to the linguistic patterns themselves. Now, the search matrix persists after selecting filters.
  • Improved layer picker: See above.
  • Regular expressions: One of the things that makes LaBB-CAT search so powerful is its use of regular expressions (aka regex), a very concise language for specifying complex text patterns. Regex have a steep learning curve for newcomers and are easy to mis-type.
    • More informative errors: While LaBB-CAT provides live-checking for invalid regex (changing to red text), simply knowing that a regex is invalid may not be enough to help a newcomer troubleshoot it. The search matrix now creates a popup “speech bubble” explaining the error (which waits 2 seconds to appear in case the user is simply in the middle of typing).

      Comparison

      A pattern input field after typing an invalid regular expression

    • Stricter checking: Previously, some patterns that could cause search errors were not flagged by live-checking. Live-checking now flags these patterns.

      Comparison

      The result of typing the invalid regular expression { and pressing Search

  • Label picker: LaBB-CAT provides a drop-down menu for layers whose notation system might be unfamiliar to users. For example, when searching the segment layer, a user can click on aƊ to insert 6 (the DISC code for /aƊ/) into the pattern input field. The label picker can also insert patterns that match any member of a category. For example, clicking Diphthongs inserts [12645] (the DISC codes for /eÉŞ aÉŞ aƊ ɔɪ oƊ/), using the regex syntax for matching any one of the characters within square brackets.
    • Inserted at cursor: Previously, the label picker always inserted labels at the end of the pattern, which could necessitate some cutting and pasting. Now, labels are inserted wherever the cursor is (and briefly highlighted to draw the user’s attention).
    • More informative: Corpus admins can configure the label picker to omit labels that should be obvious to the user for simplicity’s sake; for example, the DISC code for /p/ is p. Previously, these labels were simply absent, which could be confusing if (for example) a user was looking for the label for /p/. Now, the label picker includes a note and tooltip listing these labels.

      Comparison

      The label picker for the segment layer

    • More consistent regex: In regex, some characters have special functions ; for these characters to be interpreted literally (rather than for their special regex function), they need to be “escaped” (prefixed with \). For example, the symbol . on the foll_segment layer means a following pause, but in regex . means “any single character”; so to search for a following pause, you need to enter \. in the foll_segment input field. Complicating matters is that many characters lose their special regex functions inside square brackets, so escaping them is optional there. The label picker escapes characters that have a special regex function, but previously it would only do so outside of square brackets (i.e., only where strictly necessary). Regex newcomers often find escapes and exceptions to syntax rules bewildering, so it could create confusion to see \ in some contexts but not others. Now, the label picker escapes special regex characters in all contexts (even when they’re not strictly necessary), for a gentler regex learning curve.

      Comparison

      The pattern input field for the phonemes layer after selecting æ, then ɔ, then Monophthongs not before /ɹ/

Participant and transcript filter

  • More intuitive interface
    • Previously, the participant and transcript filters were activated by links that looked like (non-clickable) headings. Now, filters are buttons within collapsible tabs.

      Comparison

      The transcript filter panel/tab when first loading the Search page

    • Previously, clicking the filter link would modify the filter, but there was no obvious way to clear the filter. Now, new buttons more clearly delineate these actions.

      Comparison

      The participant filter panel/tab after selecting the filter "Neighborhood in (CB,FH), Speaker type = Main speaker"

  • More information: Labels for the filter tabs display the number of participants/transcripts that will be included in the search. If only one filter has been selected, the other filter tab label shows “(*)” to indicate that it is implicitly filtered (i.e., not all participants appear in all transcripts), and the text “Selected {participants/transcripts}: all {participants/transcripts}” changes to “Selected {participants/transcripts}: all {participants in selected transcripts/transcripts with selected participants}”.

    Comparison

    The transcript filter panel/tab after selecting the participant filter "Neighborhood in (CB,FH), Speaker type = Main speaker"

  • Better guidance: Instead of selecting a filter manually when performing a search, users can upload a file with participants to search. Previously, there was no guidance on file formatting. Now, this information is in a collapsible.

    Comparison

    The participant filter panel/tab when first loading the Search page, with the "What should the file look like?" collapsible opened

  • More consistent: Previously, only participants could be loaded from file. Now, transcripts can be too.
  • Warning before clobbering: It’s possible to filter transcripts after filtering participants, but not vice versa. Previously, clicking the participant filter link would simply clear the transcript filter. Now, the user is provided a warning in case this is not what they intended.

    Comparison

    The warning that appears on the Search page when selecting a transcript filter then clicking Filter Participants

Search options

Comparison

The options panel/tab on the Search page

  • More informative
    • The Exclude utterances with more than 5% overlap option doesn’t appear to be working as of LaBB-CAT version 20250430.1502, so it has been removed
    • New sub-headings make it more obvious which options actually affect how search matches are identified vs. simply how they’re displayed
    • Clearer wording
  • Bugfix: Previously, if No matches, only a summary of results was unchecked (the default), a new results tab would auto-open only for the first search you performed, but not subsequent searches. Now, this option works as intended, always auto-opening a results tab if unchecked (and never doing so if checked).

Search results page

  • Context selector: The Search results page displays each match on its own line, highlighted in yellow, with surrounding context. The amount of surrounding context can be controlled by the user.

    Comparison

    The first few matches on the Search results page (showing a search for pitt on the orthography layer), after clicking on the context selector

    • Don’t clobber selected matches: The Search results page includes a checkbox next to each match (all selected by default), allowing the user to export data for just a selection of matches. Previously, if you selected some checkboxes then changed the context, the checkboxes would revert to the default of selecting all. Now, the selection of specific checkboxes persists after changing context.
    • More explicit: The context can sometimes be shorter than expected depending on the match’s position in the utterance (e.g., the 5th match here is at the end of the utterance, so there’s no following context). The labels now more clearly indicate that the context is “up to” a certain number of words.
  • Improved layout: All four export options now have collapsible menus for configuring the export. The Prefix Names option applies to both Utterance Export and Audio Export since if users are exporting both, they likely want filenames to match. Now, the Prefix names checkbox appears in both collapsible menus, and if you select it in one menu, it automatically gets selected in the other menu too.

    Comparison

    The export options on the Search results page (showing a search for pitt on the orthography layer)

  • CSV export:

    Comparison

    The CSV Export menu on the Search results page (showing a search for pitt on the orthography layer)

    • Enforcing data best practices: There are a handful of columns that should always be included in an exported CSV because they provide a “paper trail” that can help contextualize the exported data well into the future. But new users who don’t know what (e.g.) Match ID is for might think it’s optional and regret losing the “paper trail” later. (This comes directly from Dan’s experience!) Now, these columns are required (selected by default and can’t be deselected).
    • More consistent: Where possible, checkboxes have been relabeled to match column names in the exported CSV.
    • Improved layer picker: See above.

Transcripts and Participants pages

The Transcripts and Participants pages not only display and filter attributes, they also act as jumping-off points to individual Transcript pages, the Search page, and one another (e.g., listing all of the transcripts for a selection of participants).

Comparison: Participants page

The Participants page (first few entries) when first loaded, including the default participant filter

Comparison: Transcripts page

The Transcripts page (first few entries) when first loaded

  • Reorganized/renamed action buttons more clearly convey functionality. For example, both Export Transcripts and Export Format download transcripts, so Export Transcripts becomes Export Original and Export Format becomes Export Formatted, and the buttons get moved next to each other.
  • Less confusing: The button for clearing filters doesn’t appear when there’s no filter to clear (like on the Transcripts page when first loaded)
  • List Transcripts and List Participants buttons: These buttons show how participants and transcripts fit together by loading the other page. For example, on the Participants page, selecting a filter then clicking List Transcripts loads the Transcript page, with transcript filters preset to include only the transcripts that contain at least one of the participants matched by the participant filter. (In the old UI, this button was called just Transcripts.)

    Comparison

    The Transcripts page (first few entries) that loads after selecting the filters "Neighborhood = CB, Gender = Male, Speaker type = Main speaker" on the Participants page then clicking Transcripts (old UI) or List Transcripts (new UI)

    • New functionality: Previously, there was no way to do the opposite of List Transcripts: find all of the participants in a selection of transcripts. Now, the Transcripts page has a List Participants button too.
    • New functionality: Previously, if you were on the Transcripts page and wanted to stop filtering by participant, you’d have to click transcripts in the top menu; reloading the page would just reload the participant filter, which could be frustrating. Now, the Clear Participant Filter button removes the participant filter, leaving any transcript filters intact. (Ditto for Clear Transcript Filter on the Participants page.)
    • More informative: Previously, the description of the source-page filter was hidden in a tooltip on the destination page. Now, this description is displayed alongside the number of matching participants/transcripts and (if any) destination-page filter(s).
    • More helpful: LaBB-CAT allows corpus maintainers to specify default participant/transcript filters, which are applied automatically when the participants/Transcripts page is loaded (which the user can then manually clear). In APLS, the default participant filter is ‘type = Main speaker’ so that the default Participants page view only includes interviewees. However, if you want to list participants for a given transcript, you probably want all participants, so these buttons override any default filters on the destination page.
  • Cleaner UX for export configuration: On the Transcripts page, the configuration panels for Export Attributes and Export Format(ted) now appear to the right of or below those buttons, followed by a button to close the panel
  • More consistent: Previously, clicking on a transcript name would load its individual Transcript page, but participant names loaded their Participant attributes page. Now, the Participants page matches the Transcripts page by putting the link to the corresponding Participant attributes page in a button at the end of the row (with for users who have permissions to edit attributes, otherwise).

    Comparison

    The Transcripts page after clicking Export Format (old UI) or Export Formatted (new UI)

  • Improved layer picker: See above.
  • Bugfix: Previously, if you created a filter, then cleared the filter, then filled in the From box for a numeric range (e.g., entering 5 for Birth year From), LaBB-CAT would interpret the value as a regex to match (e.g., only returning participants whose birth year contains the character 5). Now, the From box behaves correctly.

    Comparison

    The Participants page after clearing a filter then entering 5 into the Birth year From box

Process with Praat page

  • Better guidance on file uploads: Like search filter file uploads.

    Comparison

    The Process with Praat page when first loaded

  • Modern Praat script syntax: The syntax for Praat’s scripting language changed way back in 2014. While the old syntax is still supported, newcomers to Praat scripting are better served learning the modern syntax. As a result, the customizable Praat commands in LaBB-CAT now default to the modern syntax.

    Comparison

    The Formants menu on the Process with Praat page after uploading a file

  • Better guidance on custom Praat scripts: LaBB-CAT uses a somewhat estoric syntax for custom Praat scripts that can be run to generate measurements from tokens. The Custom Praat script menu now better describes this syntax. This includes clarifying how the variables available to custom scripts relate to the parameters set at the top of the page.

    Comparison

    The top of the Custom Praat script menu on the Process with Praat page after uploading a file

Miscellaneous

  • Message and error pop-ups: LaBB-CAT occasionally sends alerts to the user, either because something has gone wrong or just as a “heads-up”. Previously, these alerts would always appear above the page title, so you wouldn’t see them if you’d scrolled further down the page. Now, these alerts always appear at the top of the window regardless of scroll, and they can be cleared early.

    Comparison: heads-up messages

    The heads-up message that results when specifying the filter xxx on the Transcripts page

    Comparison: errors

    The error alert that results when uploading an invalid file to the participant filter on the Search page. In the old UI, the user has scrolled too far down the page to see the alert.

  1. Advanced users can also access APLS via the nzilbb.labbcat package for R, or the nzilbb-labbcat library for Python. These packages have most of the functionality of the browser-based graphical user interface (https://apls.pitt.edu/labbcat), with some added benefits such as reproducibility (e.g., a particular set of search criteria can be encoded in R/Python code rather than described for copy/paste). 

  2. Some of these features have already been accepted for the main trunk of LaBB-CAT development and will appear in a future LaBB-CAT release.Â