Skip to content

MUSIC (Multiple Signal Classification) implementation for DOA (Direction of Arrival) and improvements

Notifications You must be signed in to change notification settings

rayandaod/MUSIC_for_DOA

Repository files navigation

MUSIC for DOA

Mini-project for the EPFL Master course COM 500 - Statistical Signal Data Processing through Applications

Summary

MUSIC (MUltiple Signal Classification) is a popular algorithm used in different fields but in particular to obtain the Direction Of Arrival when receiving signals on a multiple sensor array, and under some assumptions.
In this project, we were asked to implement a BASIC and an IMPROVED version of the algorithm and to apply it on GENERATED and REAL data, composed of CORRELATED and UNCORRELATED signals.

The real data was provided by the course team, and was also retrieved from the Pyramic dataset.

As a reference, we were given the previous year submission by Huang Guyue, Iriarte Sainz Diego Gabriel and Nyambuu Lkham.

Quick start

Clone the repository

git clone https://github.com/rayandaod/SSDP_mini-project.git
cd SSDP_mini-project

Download the content of the data folder here and place in SSDP_mini-project/data/

Create your virtual environment (optional)

Install the dependencies and start a local Jupyter server

pip install requirements.txt
jupyter notebook

Run the generated_data.ipynb or the real_data.ipynb notebook

Project architecture

.
├── data/                             # Data folder - used in the real_data.ipynb Jupyter notebook
├── instructions/                     # Instructions given by the course team
├── notebooks/                        # Source files (described below)
    ├── generated_data.ipynb
    ├── real_data.ipynb
    ├── simulations.ipynb
    ├── helper.py
├── references/                       # Useful and interesting papers on the subject
├── .gitignore                        
├── README.md
└── requirements.txt

The notebooks folder is divided in 3 jupyter notebooks, and one python file:

  • generated_data.ipynb - implementation of both the basic and the improved version of the MUSIC for DOA algorithm applied on generated data. The major improvements of the second version of the algorithm are the better handling of correlated data and the error estimation/correction applied on the microphones array.
  • real_data.ipynb - adapt the basic and improved algorithm to work on real recordings (mainly sweep and speech) provided by the course team and from the Pyramic dataset. Implementation of our own time-frame based technique.
  • Simulations.ipynb - additional examples and tuning of parameters to try to understand in depth the impact of each components of the algorithm.
  • helper.py - implementation of helper functions used through the previous notebooks.

Dependencies

The required Python 3 librairies to run the project are the following:

jupyter
numpy
matplotlib
scipy
json
math
datetime
ipython 

Authors

  • Rayan Daod Nathoo
  • Zewei Xu
  • Pierre Gabioud

Acknowledgements

Thank you Professor Andrea Ridolfi and his team for this project!

References

  • Honghao Tang, "DOA estimation based on MUSIC algorithm", Linnéuniversitetet, 2014
  • DAI Zeyang, DU Yuming, "DOA Estimation Based on Improved MUSIC Algorithm", Chengdu University of Information Technology, 2009
  • A. Paulraj, B. Ottersten, R. Roy, A. Swindlehurst, G. Xu and T. Kailath, "Subspace Methods for Directions-of-Arrival Estimation", Handbook of Statistics, 1993
  • M. Devendra and K. Manjunathachari, "DOA estimation of a system using MUSIC method", International Conference on Signal Processing and Communication Engineering Systems, 2015, pp. 309-313, doi: 10.1109/SPACES.2015.7058272.
  • Ahmad, Mushtaq & Zhang, Xiaofei, "Performance of Music Algorithm for DOA Estimation", 2016
  • Pyramic dataset
  • Pyroomacoustics library

About

MUSIC (Multiple Signal Classification) implementation for DOA (Direction of Arrival) and improvements

Resources

Stars

Watchers

Forks