Working Blind Dereverberation Code/Device/Something
From Catholicpenguin
Overview
I find myself recording human speech fairly frequently, in the form of course lectures, and other speakers. Usually, this recording is done from a hand-held voice recorder or laptop on my person, where I'm somewhere in the middle of the room.
When listening to these recordings, invariably they have extremely bad echo and reverberation distortion due to poor room characteristics which makes them often difficult or impossible to understand.
In mathematical terms, this is due to the audio signal of the speaker, x(n) being convolved with the room reverberations, modeled as h(n), into a new recorded signal, y(n):
- y(n) = x(n)*h(n)
In theory, if you have an impulse response of h(n) (the room), you can perform a de-convolution and get the original sound of the person talking back. The trouble is you usually don't have a perfect impulse response of said room.
There has been recent (~5 years it seems) research into a process called blind reverberation, a special case of blind deconvolution, where the impulse response is estimated from y(n), the corrupted signal, on the fly.
If you google for blind dereverberation you'll find lots and lots of papers, but I can't find any actual implementation or sample code.
So this project would at it's simplest be to:
- implement some blind dereverberation algorithm, such that one could feed a recorded wav file of a talk, and get out a cleaner, non-echo-ey signal.
More ambitious or future plans could be to:
- integrate this into a real time algorithm (maybe into the device running the 802.11 microphone) such that this is performed on the fly.
