インパルス応答から音声データを合成したい

Problem

シミュレーションによりデータを作成し,オフラインで動作テストを行いたい.

Solution

手元に音源の波形データと,インパルス応答ファイルがある場合には, マルチチャネルデータを合成できる.

合成は, 音源から各マイクロホンまでのインパルス応答を音源データに 畳み込むことによって, 行われる. 畳み込みは, FFT を用いた循環畳み込み法などで高速に実現できる. Matlab などを利用することも可能である. 以下に Matlab の擬似コードを示す.

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

SampleData1ch.wav に Microsoft RIFF format で 1ch 音声が収録されているものとする. また, imp1,...,imp4 は,音源からマイクロホン1,...,4までのインパルス応答の時間表現とする. y1,y2,y3,y4 が,シミュレーション合成したマルチチャネルデータである.

合成する前に, インパルス応答と音源データのサンプリング周波数を 確認しておくこと.同一サンプリング周波数のデータを畳み込む必要ある.

混合音を合成する場合は,畳み込んだデータ同士を加算合成すれば良い.

Discussion

ここで付加されるのは、乗法性ノイズである。 乗法性ノイズとは、クリーン音声に畳み込まれる歪みのことで、 音声の伝達特性や録音機器の特性などが含まれる。 従って、ここでは実際に使用するシステムの乗法性ノイズをシミュレートしてい ると言い換えることができる。

See Also

インパルスを計測したいなら、次のレシピを参照 インパルス応答を計測したい. もう一つの雑音である加法性雑音を付加したいなら、次のレシピを参照 ノイズデータを加えたい