1. Overview

By far the sexiest piece of software associated with ASR is the large-vocabulary decoder. Since this course is nothing if not about being sexy, this assignment will deal with various aspects of large-vocabulary decoding. In the first portions of this lab, we will investigate the various steps involved in building static decoding graphs as will be needed by our decoder. In the second half of the lab, you will implement a complete real-time large-vocabulary decoder from scratch. Just kidding! While such decoders are not that complex when working within the static graph paradigm, they are still beyond the scope of a two-week lab. Instead, we provide an almost complete decoder, and you will be required to add various features to it, namely word traceback a.k.a. token passing, skip arc support, and beam and rank pruning.

The goal of this assignment is for you, the student, to gain a better understanding of the various steps involved in constructing a static decoding graph for LVCSR and of the various algorithms used in large-vocabulary decoding. The lab consists of the following parts, all of which are required:

All of the files needed for the lab can be found in the directory ~stanchen/e6884/lab4/. Before starting the lab, please read the file lab4.txt; this includes all of the questions you will have to answer while doing the lab. Questions about the lab can be posted on Courseworks (https://courseworks.columbia.edu/); a discussion topic will be created for each lab. Note: The hyperlinks in this document are enclosed in square brackets; you need an online version of this document to find out where they point to.