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