This is our project for Statistical Machine Learning course. We have implemented different versions of NMF (non-negative matrix factorisation) and used this decomposition to analyse audio recordings.
Non-negative matrix factorisation (NMF) alogrithms allow to factorize matrices while enforcing that the coefficients in the decomposition are non-negative. In the case of spectogram factorisation this allows for meaningful separation into sound components. Here we consider multiplicative gradient and expectation-maximisation (EM) algorithms for factorisation based on β-divergence and study how they perform under different choices of initialisation and β. In particular we show applications of NMF to pitch estimation and denoising of audio recording and study how those different methods lead to identification of different sound features.
- Our report NMF.pdf, where we describe all the algorithms and analyse results
- Python script NMF.py, where our classes are implemented
- Python notebooks with examples on how to use classes, with benchmarking and with tests on synthetic and real data
- Input audio data and results of denoising using Euclidian distance NMF and KL divergence NMF