CTC Loss
As described above, there is no alignment between utterances and their corresponding phonemes. Thus, Train your network using CTC loss. Decode your predictions, preferably using beam search. Use the list of phonemes provided on the data page to make each prediction into a text string.

Tensor flow has built-in CTC loss function. But for Pytorch, you can install the CTC-Loss library. The  required CTC-loss library, Warp-CTC, can be installed [here](https://github.com/SeanNaren/warp-ctc). Follow the download instruction. NOTE: Make sure you download the GPU support version. 

##Using Warp CTC in pytorch

The module assumes the blank position is at `0`. If there are `n` labels, the model output should be of size `n+1`. The targets passed to the loss function should be from `1` to `n` instead of from `0` to `n-1`.

The loss function takes four inputs. The first input is a tensor of your model network output. The second input is a tensor of all the labels should be concatenated into one single 1D tensor. The third input is a tensor containing the size of each output sequence from the network. The fourth input is a tensor containing the label of each target.

Your submission should contain the predicted strings for each item in the test set.

##CTC Decoding

If you are using PyTorch you can manually install the library, ctcdecode, [here](https://github.com/parlance/ctcdecode). They have an implementation of beam search, use it in your code to decode the output of your model. If you are using Tensorflow, it has it's own implementation of beam search.