Masassiah Blog

現役サラリーマンのスキルアップのための読書まとめ

HRIR を wav ファイルに畳み込み

イメージ 1

HRIR*1を wav ファイル*2に畳み込む MATLAB プログラムを作成した。
load LHRIR
load RHRIR

[wn,fs,bits]=wavread('hoge1.wav');
voiceLR(:,1)=conv(LHRIR,wn);
voiceLR(:,2)=conv(RHRIR,wn);
wavwrite(voiceLR,fs,bits,'hoge2.wav');
解説
LHRIR が左耳の HRIR,RHRIR が右耳の HRIR。
上の画像は右耳から数 cm 離れた点の HRIR です。
右耳の HRIR の方が早く到達しており,音圧も左耳の HRIR に比べて大きくなっています。
1 チャンネルのドライソース信号の wav ファイル*3を wavread で読み込み,conv 関数を使って左右の耳の HRIR を畳み込みます。
そして voiceLR を 2 チャンネル wav ファイル*4として保存します。
HRIR のサンプリング周波数とドライソース信号の wav ファイルのサンプリング周波数が違うと,邪悪な wav ファイルが書き出されるので注意が必要です。

*1:Head-Related Impulse Response : 頭部インパルス応答

*2:1 チャンネルのドライソース信号

*3:上記の MATLAB プログラムでは hoge1.wav

*4:上記の MATLAB プログラムでは hoge2.wav