Friday, 22 May 2015

Estimating the Impulse Response of the Room Using Sweep Signal Microphone Recorded Signal (Input & Output of a Convolution)


I played this signal A (a 20Hz to 20000Hz sinusoidal sweep in 10 seconds) with a studio monitor speaker in a big church, and I recorded the result B with good microphones.


The result is very reverb-ish, that's exactly what I wanted to catch.



Now a software (such as Deconvolver but non open-source) can build an impulse response from A + B, that can be later used in a convolution reverb.


It works well. But I would like to learn how to do this myself via DSP / programming.


How can I use a sweep (signal A) + recorded output (signal B) to get an impulse reponse?




Edit: In other words, if a is the original sweep, b the recorded output, and h the impulse response, how to get h from


ah=b


Is this formulation correct? is the solution h=a1b, where a1 is the inverse of a for the convolution? How to compute a convolution-inverse of a discrete signal?



Answer



this is the two-channel FFT method of spectrum analyzer:


y[n]=h[n]  x[n]



just make sure that the length of the FFT N is at least as large as the length of sound x[n] plus the expected length of the impulse response h[n]. the length of sound y[n] is also as long as the FFT. you can round N up to the nearest power of two. just zero-pad everything to that length and then


H[k]=Y[k]X[k]


is functionally true.


you might sometimes have to worry about division by zero, but if your driving signal x[n] is sufficiently broad-banded (which a linear sweep or a maximum-length sequence is), then you don't have to worry too much about division by zero.


if you know H[k], then you know h[n].


No comments:

Post a Comment

readings - Appending 内 to a company name is read ない or うち?

For example, if I say マイクロソフト内のパートナーシップは強いです, is the 内 here read as うち or ない? Answer 「内」 in the form: 「Proper Noun + 内」 is always read 「ない...