{
  "fetched_at": "2026-10-19T19:00:46Z",
  "source_url": "https://www.kaggle.com/competitions/11785-hw1p2-summer2021/data",
  "pages": [
    {
      "name": "data-description",
      "content": "<h1>File descriptions</h1>\nData files are available for download from this page.\n\n<h2>File descriptions</h2>\ntrain.npy - training features ;\ntrain_labels.npy - training labels ;\ndev.npy - development/validation features ;\ndev_labels.npy - development/validation labels ;\ntest.npy - test features ;\nsample.csv - sample submission in correct format ;\nphonemes.txt - distinct phonemes  \n<h2>Feature Files</h2>\n[train|dev|test].npy contain a numpy object array of shape [utterances]. Each utterance is a float32 ndarray of shape [time, frequency], where time is the length of the utterance. Frequency dimension is always 40 but time dimension is of variable length.\n\n<h2>Label Files</h2>\n[train|dev]_labels.npy contain a numpy object array of shape [utterances]. Each element in the array is an int32 array of shape [time] and provides the phoneme state label for each frame. There are 71 distinct labels [0-70], one for each subphoneme.",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Description",
      "content": "<p> In the assignment, you will use a feed forward neural network to design an end-to-end system for Speech recognition. This speech recognition will mainly include frame level classification of speech or audios as given to you. More details about the data and the implementation are given in the Hw1p2 writeup available on the course website. Data can be downloaded from the 'Data' tab on this same page on Kaggle. Good luck! </p>",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Evaluation",
      "content": "<h2>Evaluation Metric</h2>\nThe evaluation metric for this competition is frame-level accuracy. There are a total of 1,618,835 frames in the test set. You will be ranked by unweighted accuracy on those phoneme state labels.\n\n<h2>Submission Format</h2>\nSubmission files should contain two columns: Id and Label.\n\nId: the 0-based index of the frame in the test set [0-1618834]\n\nLabel: the predicted label of the phoneme [0-70]\nId=0 is the first frame in the first utterance. Id=1,618,834 is the last frame in the last utterance. A sample submission file is available on the Data page.\n\n<h2>Rules</h2>\nYour model MUST use an MLP (no RNNs or ConvNets). We will check your code to make sure this is the case. However, you are free to use auto-differentiation libraries like PyTorch or Tensorflow.\n\n(Note: Support will most likely only be provided for PyTorch.)",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "rules",
      "content": "This is a page where you can include rules that participants must accept before joining. You may wish to include rules like:\n\n - Don't cheat!\n - Apply yourself!\n - Have fun!",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Implementation Tips",
      "content": "<h1>Implementation Tips</h1>\n<h2>Network Architecture</h2>\n*You MUST use MLPs (e.g. no RNN or CNN)*\n\nFeel free to experiment with different architectures. The simplest approach is to build a feedforward network that takes in a single frame (input size 40) and outputs probabilities across phoneme states using a softmax output to normalize the logits.\n\n<h2>Context</h2>\nTemporal context is important for distinguishing elements of speech and you can experiment with adding context to your ANN model. For example, you can try concatenating k mel spectrogram frames around the current time step. This technique would make the size of the input vector 40 * (2k + 1). You will need to adjust your data preprocessing and batching logic to adapt for frame context. Writing code that will let you experiment with variable context sizes easily is recommended.\n\nIntuition: Since each mel spectrogram frame is only 25ms of the speech audio data, a single frame is unlikely to represent a complete phoneme. Concatenating nearby \"k\" frames will thus be helpful. Here \"k\" can be viewed as a hyperparameter for you to try out.\n\n(Hint: This is the key to boost your score!)\n\n<h2>Data Batching</h2>\nIt is important to consider that the data is provided in the form of utterance samples and not frame samples. The property of mini-batch SGD that gradients over all batches in an epoch approximate the true gradient only holds if each batch is IID (Independent and Identically Distributed). If we sample uniformly over utterances and also sample uniformly over frames within the utterance, our batches will surely not be IID. For example, different utterances will have considerably different numbers of phoneme instances. Sampling uniformly biases the training data by over-representing phonemes in the utterance with fewer phonemes (and therefore its phoneme states). You can try a different sampling technique to batch your training data to mitigate this issue.\n\nMany approaches are possible. See what can get you to the top of the leaderboard!",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    }
  ]
}