Project Motivation and Description:
Sound Source Localization Analysis in a reverberant environment was the topic of my master’s thesis project at Johns Hopkins University. The aim of this work is to help quickly find and detect heart murmurs or other heart-related issues in a short period of time. In order to accurately diagnosis heart murmurs, the S1 and S2 hearts sounds need to be found. While this may sound easy, the S1 and S2 sounds are in a reverberant environment, so the sound echoes throughout the heart chambers making it extremely difficult to exactly pinpoint their source of origin.
My Role:
In order to circumvent this problem, a vest with 12 microphones attached to it— a Stethovest— is placed directly onto the patient to record of the heart sounds for several seconds. Using the recordings from the Stethovest , I isolated the S1 and S2 sounds and then designed a multi-threaded system to determine within an area of 3 millimeters where S1 and S2 originate from. In order to accurately design this system, I implemented an open source library of multiple TDOA (time distance of arrival) methods and tested each one in a environment similar to the heart with artificial data. After I selecting the most effective methods from the simulations, I plugged in the heart recording data and ran several experiments to find S1 and S2.
Most challenging part of the project:
The hardest part of this project was optimizing the run-time of the system. The different TDOA methods outputted two angles (an azimuth and a co-latitude angle), which was a direction of where the source could be coming from. So, I iteratively compared the approximate locations from two different pairs of three microphones via extending each pair of angles infinitely in line, looking for the point of intersection. However, this approach took nearly 5 hours to get results, which was too long. After trying several different approaches, it dawned on me that instead of looking for a point of intersection, I should instead look for a cluster using the advanced k-dimensional tree data structure. After using this data structure, I significantly cut down my run-time and then I continued to optimize little by little (used a specific group to look for S1 and S2 as well as implementing multi-threading) until I was able to get the run-time down to less than 5 minutes for each method!
Moving Forward:
While I might be done with my master’s degree, this project is far from over. Now, that I have found the S1 and S2 sounds, I can use the recordings to predict whether someone has a heart-valve failure or diagnosis heart-murmurs. More on this in my ongoing project Heart Sounds Classification!