5.3 Synthesizing multichannel sound from impulse response

Problem

To synthesize multichannel sound to test my system offline

Solution

You can synthesize a multichannel sound with an original sound and an impulse response file. Multichannel sound is synthesized by the convolution of an original sound and an impulse response. Using FFT-based implementation such as cyclic convolution, you can obtain the simulated data quickly. The pseudo Matlab code for convolution is:

x=wavread('SampleData1ch.wav');
y1=conv(x,imp1);
y2=conv(x,imp2);
y3=conv(x,imp3);
y4=conv(x,imp4);

Here, we assume that SampleData1ch.wav is the 1 channel original speech in Microsoft RIFF format, with imp1, ..., imp4 indicating time-domain representations of impulse responses from the sound source to the microphone 1, ..., 4. Thus, y1,y2,y3 and y4 are the multi-channel synthesized sound being simulated. It is important to confirm impulse responses and sampling frequency of the original sound before synthesizing because the convolution of sounds with different sampling rates is meaningless. To generate a mixture of sounds, add the synthesized sounds.

Discussion

The convolution of an original sound and an impulse response can simulate multiplicative noise. This multiplicative noise, such as transfer characteristics from the sound source to the microphone or the recording device, is modeled by the convolution to the clean signal. Therefore, this synthesis simulates multiplicative noise.

See Also

To measure impulse response, see Recording impulse response. To add noise, see Adding noise.