Problem
音源定位や音源分離で使用するためにインパルス応答を測定したい.
Solution
インパルス応答の測定には, スピーカ,マイクロフォンアレー,同期再生録音可能なオーディオデバイス, TSP 信号が必要である. 1回分のTSP信号は,harktool をインストールしたときに, /usr/bin/harktool3_utilsへインストールされる. インストールの方法は HARK Installation Instructions を参照. TSP信号のファイル名は 16384.little_endian.wavである. このままだとTSP信号が1回分しか含まれないので,必要な回数 (例えば 8回分や 16回分) だけ波形編集ソフトウェアや matlab, python などでカット&ペーストする. このとき,TSP信号同士に空白を入れてはいけない.
これと等価な, 16384.little_endian.tspという 32bit float の波形データがリトルエンディアンで並んだ raw ファイルもある. このファイルを読み込みたいときは, wavesurfer うとよい.(インストールは sudo apt-get install wavesurfer) 次に,wavesurferでファイルを開き,次のコマンドで開く
wavesurfer /usr/bin/harktool3_utils/16384.little_endian.tsp 図5.1 のように設定すれば波形として読み込め る.
インパルス応答の測定は2つのステップから成る. (1) TSP信号の録音・再生と,(2) TSP信号からのインパルス応答の計算である.
TSP信号の録音・再生
TSP信号を複数回再生し,それぞれの信号を加算することで暗騒音や残響の影響を軽 減できる. 8回のTSPを含むファイルを tsp8.wav とする.
あとは,HARKのサポートツールのひとつ wios を使えば測定ができる. たとえば 8チャネルの入力をもつALSA対応デバイスで同期録音再生を行うには, 以下のコマンドを実行すれば良い.
wios -s -x 0 -i tsp8.wav -c 8 -o r100_d000.wav
詳しくはレシピ 多チャネル録音したいを参照.
インパルス応答は,各方向からの音をすべて測定する必要がある. マイクロホンアレーの中心から1-2メートルぐらいの同心円上に, 等角度で順番にスピーカを動かし,録音していく. したがって,マイクアレイから距離1mで10度間隔で計測した場合のファイル名は例えば次の ようになる.
r100_d000.wav
r100_d010.wav
r100_d020.wav
インパルス応答の計算
こうして録音した信号に,逆TSP信号を畳み込み, 複数回の再生を同期加算して平均値を求めることでインパルス応答を求める. インパルス応答の計算には harktool を用いればよい. 詳しくは HARK ドキュメントの harktool の章を参照.
Discussion
インパルス応答とは, システムにインパルス関数を入力に与えたときの出力のことである. 音響処理の場合は,たとえば広い部屋で手を叩いた(=インパルス)ときの 残響がインパルス応答だと思えば良い. しかし,本当にインパルスを与えて計測しようとすると,相当に大きな音でなければ十分な 信号対雑音比 (S/N比) を得られない. そこで,かわりにエネルギーを時間で分散させた Time Stretched Pulse (TSP) 信号を用い て計測する.こうして録音した TSP信号に,元のTSP信号を逆にした逆TSP信号を畳み込むこと でインパルス応答を求めることができる [1, 2].
角度の間隔は,マイクロホンアレーの配置にもよるが, 5-10度間隔ぐらいで録音すれば充分だろう.
See Also
wios による同期再生録音についてはレシピ 多チャネル録音したいを参照.
harktool の使い方は,hark-document の サポートツールの章を参照.
Y. Suzuki, F. Asano, H.-Y. Kim, and Toshio Sone, "An optimum computer-generated pulse signal suitable for the measurement of very long impulse responses", J. Acoust. Soc. Am. Vol.97(2), pp.-1119-1123, 1995
TSPを用いたインパルス応答の測定 http://tosa.mri.co.jp/sounddb/tsp/index.htm