MLEnd Hums and Whistles

A dataset for extreme music recognition


About Dataset


Music is part of our lives.

Many of us can't stop listening to music and spend a considerable amount of time trying to decide what to listen to next or what is worse, looking for that song whose title we have forgotten! How do we go about finding that song we want to listen to, but have forgotten?


We can try to remember a fragment of the lyrics and simply use a text-based search engine. What if we don't recall the lyrics or they are in a language we don't even speak? Well, we can ask for help: we hum to the song and hope that someone will recognize it - no matter how poorly we do it. Think about it. It is amazing that we can recognize a song when we listen to it. But isn't it even more amazing that we can recognize it when someone else is humming or whistling to it? Wouldn't it be great to have an audio-based search engine that did this for us?

This would truly be extreme music recognition.


The MLEnd Hums and Whistles dataset will give you an opportunity to explore the non-trivial problem of recognizing music from extreme interpretations, in our case, hums and whistles produced by people like you and me. This dataset comes with additional demographic information about our participants, so that you can explore how people with different backgrounds interpret music. A small version of this dataset can be found here.
The MLEnd datasets have been created by students at the School of Electronic Engineering and Computer Science, Queen Mary University of London. Other datasets include the MLEnd Spoken Numerals dataset, also available on Kaggle. Do not hesitate to reach out if you want to know more about how we did it.

Enjoy!


Sample Dataset

Here are some samples of Hums and Whistles.

Potter:Hum

Potter:Hum

Potter:Whistle

Frozen: Hum

Hakuna: Whistle

Mamma: Whistle

Mamma: Hum

Panther: Hum

Rain: Hum

Showman: Whistle

StarWars: Hum

StarWars: Whistle




Download Data

Install mlend

To download the Spoken Numerals data, first step is to install mlend library. Use pip to install library.

pip install mlend



Download subset of data

To download subset of the data, song ‘Potter’ from first five interepreters, that includes humming and whisteling, use following piece of code:

import mlend
from mlend import download_hums_whistles, hums_whistles_load

subset = {'Song':['Potter'],'Interpreter':list(range(5))}
datadir = download_hums_whistles(save_to = '../MLEnd', subset = subset,verbose=1,
                                 overwrite=False,pbar_style='colab')

This code will download data in given path (‘../MLEnd’) and returns the path of data as datadir (='../MLEnd/hums_whistles')



Download full dataset

To download full dataset, use empty subset, as in following piece of code:

import mlend
from mlend import download_hums_whistles, hums_whistles_load

subset = {}
datadir = download_hums_whistles(save_to = '../MLEnd', subset = subset,verbose=1,
                                 overwrite=False,pbar_style='colab')



Load the Data and benchmark sets

After downloading partial or full dataset, mlend allows you to load the dataset with specified method of training and testing split. Note, mlend doesn’t read and load the audio files in memory, instead it reads the path of files, for further reading and cleaning data as per requirement of the model. For more details, check help(hums_whistles_load).


import mlend
from mlend import download_hums_whistles, hums_whistles_load

subset = {'Song':['Potter'],'Interpreter':list(range(5))}
datadir = download_hums_whistles(save_to = '../MLEnd', subset = subset,verbose=1,
                                 overwrite=False,pbar_style='colab')

TrainSet,TestSet, MAPs = hums_whistles_load(datadir_main = datadir,
                                            train_test_split = 'Benchmark_A',
                                            verbose=1,encode_labels=True)




MLEnd Documentation

For mlend documentation use help(fun) in python terminal or Jupyter-notebook. Alternately, check out

MLEnd Documentation