This work sample was my final project for the CSCI-E63 "Big Data" course at the Harvard Extension School and was completed over a span of three weeks (nights and weekends). The assignment was to develop a tutorial-like demonstration of a particular technology or area of application. I wanted to develop an artificial neural network classifier and apply it to a problem area in the natural sciences. I chose this subject area based on my interests in marine mammals and accoustics. Although the application found here is limited to classify the calls of 6 species of baleen whales, I had proposed the title originally thinking I might also classify the calls of other types of marine mammals, but reduced the scope for tractability.
Despite a small sample size due to the course submission limits, the results shown in the IPYNB are quite good, and would be even better with larger samples. Computation of the final submission was performed on an Amazon Web Services P2xlarge server with CUDA 9.
Two code contributions may be found here:
is used to create the training and testing data sets from pairs of .wav files and their accompanying text files. The text files contain scientist-annotated start and end times for the occurrence of whale calls for the corresponding .wav file. Each .wav file may be several minutes (up to an hour) in length, and there are long intervals of "noise" in between the labeled calls.
is a backpropagation neural network (NN) classifier written in a Python implementation of TensorFlow. The architecture of the NN is described in the Jupyter Notebook. It makes extensive use of the Librosa library for extracting features from audio files, and Matplotlib for plotting spectrograms.
