Blind Deconvolution is a DSP process which aims to execute deconvolution on a signal without the impulse response for the function. This is highly practical for audio applications because often recordings made in a room have an undesirable amount of room tone, but IRs were never made for that space. Therefore, it would be desirable to isolate the source audio from the reverberation (Impulse Response) of the room; hence this process is often called Dereverberation in audio contexts.
Our research suggests audio blind deconvolution is possible, though there is a lot of overhead. The first challenge is that an educated guess must be made about the nature of the IR signal. For example, it may be necessary in our script to include parameters which ask the user to enter the relative room size (small, medium, large). That way, we can make intelligent assumptions about the nature of the IR we are extracting, specifically the length of the reverbation (which in turn affects the length of the IR. This process boils down to making an educated IR model, which can be refined by clues in the signal. A study (1) conducted by Petr Tichavsky in 2008 explored audio source separation using an early ML algorithm called Independent Component Analysis and Extraction. The calculus-based philosphy behind ICA essentially is; given the LTI nature of a reverberation system; an entire room reverberation can be modelled as a summation of small clusters of audio sources with similar filters applied to them. This differential audio filtering allows a sorting algorithm to intelligently deicde whether the filter applied to the specific cluster belongs to source 1 or 2. These categorized sources are then reconstructed to create the source audio and impulse response.
In theory, this should be feasible for our project. Fortunately, one of our team members has some experience with ICA from EEC 452. One of our next steps to achieve this implementation will be to look for relevant ICA libraries, or potentially reach out to the authors of this study.
Our team has spent a lot of time researching blind deconvolution methods. Many of the algorithms are built on statistical metrics, and the vetted approach as discussed before is ICA which essentially tries to model two independent-as-possible signals which still result in the composite. Something that we thought was interesting about this was the concept of gaussian signals. DSP Engineers realized that most composite signals have gaussian distribution, whereas source signals are mostly non-gaussian, though this is not a hard-and-fast rule. Therefore, one can assume that the sources have a non-gaussian amplitude distribution in the case of audio signals. We’ve also been looking into MATLAB’s built-in libraries and capabilities in order to make our existing convolution algorithm more time-efficient. This will allow us to test faster, use higher sample rates, and potentially even turn our program into a web application that we can host on this website. Much of this information comes from MATLAB’s own Parallel Computing Toolbox, which includes tools like GPU acceleration and multithreading, both of which are viable and supported options for the functions fft and ifft.
Our ultimate goal is to perform deconvolution on an audio recording without having the Impulse Response of the room. Over time, we have been closing the gap by researching blind deconvolution in parallel with our current work. We found one method in particular: Independent Component Analysis (ICA) has historically been preferred for audio source separation (e.g. removing the reverb of the room from the original sound source).
ICA is a statistically-based method which presumes a signal is the composite of 2 or more source signals, and iteratively decreases mutual information between hypothetical sources in the signal. This way, over many iterations, there will be component signals which are as dissimilar (or statistically independent) as possible while still producing the composite signal when combined. This is possible because signal mixtures tend to have gaussian probability distributions in terms of frequency and amplitude, while sources tend to be non-gaussian (1, p. 72). The challenging part of ICA is determining how to approach unmixing the composite signal, which often requires higher order statistical methods.
Fortunately, we have already found a MATLAB based ICA implementation (JadeR) (2) and have attempted using them on our audio. Unfortunately, we’ve found little success so far. Our attempts have lead to outputs which are nearly identical to our inputs leading to doubts over whether we were applying this algorithm properly. There is also some concern that since the reverberation of a sound is necessarily shaped by the dry sound and not independent, the effectiveness of ICA might be limited.
Nevertheless, we are happy with our current product, because our intention was to first fully flesh out a basic deconvolution plugin and then build a blind deconvolution framework around it. In the future, we intend to switch from ICA research to implementation as we will have our vanilla deconvolution plugin nearly polished.
This is a sort of stretch-goal for us, but if we meet these goals we would really like to launch a web version of our MATLAB script. This way anyone could provide audio to the program and isolate the reverb from their recordings. Fortunately there are web integration libraries available with MATLAB, so we may be able to integrate it into this website.