簡易ルームマイク音圧レベル測定シミュレーションプログラム

マイクで音圧レベルを測定する記事を書きたいとずっと思っていたのですが、時間が取れずにいました. つい先日、この知識を使ったプロジェクトがありました. プロジェクトが終わったら、関連する知識をまとめます. .

一般的な考え方は、部屋の点音源から音を放射し、部屋の任意の位置で音圧を測定し、シミュレーション プログラムを与えることです。ここでは、RIR (Room Impulse Response)、シミュレートされた音の伝達経路、および音圧レベルの計算を使用する必要があります。

1. 室内インパルス応答と T60

ルームショック対応機能はドイツの古い方式、ミラー方式を今でも採用

https://www.audiolabs-erlangen.de/fau/professor/habets/software/rir-generator

c = 340; % 音速 (m/s)
fs = 16000; % サンプル周波数 (サンプル/秒)
r = MicPos; % 受信機の位置 [xyz] (m)
s = SpeakerPos; % ソース位置 [xyz] (m)
Rdim = [LWH]; % 部屋の寸法 [xyz] (m)


% 吸音係数
alpha = 0.3;

rc = 1 - アルファ;
ベータ = rc *ones(1,6);

h = rir_generator(c, fs, r, s, Rdim, ベータ, n);

このうち、beta は 2 つの入力方法で、1 つのデータが残響時間で、1 行 6 列のベクトルであれば、部屋の 6 面の反射

clean_signal = audioread('test.wav');

reverb_signal = fftfilt(h,clean_signal);
audiowrite('test_reverb.wav',リバーブ,fs);

音の一部が音響伝達経路によって減衰され、残響が追加されます。効果は次のとおりです。

これは点音源の結果であり、追加のノイズはないことに注意してください。

T60 時間は単純で、ツールを使用して直接計算できます

%計算量
V = L*W*H;

% 計算された表面積
S = 2*(L*W + W*H + H*L);

T60 = 0.161*V/(アルファ*S);

2.Matlab 描画は音の伝達経路をシミュレートします

Matlab の形状の助けを借りて、部屋、電子音源、およびマイクのシミュレーション位置を描画するのは非常に便利です。

これが直接音で、反射音の方が厄介で、特に多重反射が多いので、ここでは便宜上、単一反射のみを扱います。

まずスピーカーの音源点を見つけて、ある壁を映す

MirrorPos = [2*L - SpeakerPos(1),SpeakerPos(2),SpeakerPos(3)];

下の図の緑色の点は、右側の壁に対するスピーカーの対称点です。

次のプログラムの助けを借りて、直線と空間の平面の交点を見つけます

交差点は黄色でマークされています

https://www.mathworks.com/matlabcentral/fileexchange/17751-straight-line-and-plane-intersection

線の接続、矢印の描画、仮想ミラー ポイントの非表示

これは、6 つの (単一の) リフレクション ケースを描画します。

反射経路と減衰条件は異なる場合があり、直接音とともに、組み合わせにより残響フィールドの効果が作成されます

3. 音圧レベルの算出

スピーカーの電気音源の音圧を80dBSPLとすると、信号の実効値から直接計算できるマイクロホンの音圧を求めます。

まず、関連する規格に従って、次のプログラムによって生成される A 重み付けフィルターを生成する必要があります。

https://www.mathworks.com/matlabcentral/fileexchange/64231- calibrationvoicespl?s_tid=srchtitle

%生成 A 重み付けフィルター
[b,a] = adsgn(fs);
[h,w] = freqz(b,a,1024);
semilogx(w/pi,20*log10(abs(h)));

実際の曲線と比較する:

http://www.larsondavis.com/support/sound-measurement-terminology

マイク位置での音圧は単純和算で算出可能

4. いくつかの拡張命令

実際の音圧の計算方法は、音圧について具体的に説明している標準 iec_61672 にある必要があります。 サウンド レベル メーター - パート 1: 仕様

Matlab が参照しているいくつかの資料によると、https://www.mathworks.com/help/audio/ref/splmeter-system-object.html

および github の py 関連情報https://github.com/python-acoustics/python-acoustics/blob/master/acoustics/standards/iec_61672_1_2013.py

大まかに以下の音圧レベルがあります。


周波数重み付け
騒音
レベルLf

次の 2 つの点に注目してください。

a. 同等の連続音圧レベル、感覚は完全で平均的

b. 時間重み付けされた騒音レベルの感覚曲線はリアルタイムで変化しますが、それは音圧レベル機器で使用されていますか? [検証中]、高速と低速に分けられます

 

指数関数積分を含む、y (重みの後) とインパルス応答の畳み込みとして定義されます。

実際に使用されている騒音計には次の 3 種類があります。

http://www.intecconinc.com/index.php/productos?format=raw&task=download&fid=24

35ms 125ms、1sは次のτ(tao)に対応

 

 py によって与えられる定数:

上記の指数関数

負の無限大、t は一般に 0 から始まるため、負の半軸を考慮する必要はありません。exp 関数は、tx = 0 のときに最小になり、tx = t のときに 1 に近づき、時間の重み付けになります。

時間から遠いほど重みが低く、近いほど重みが高くなります

忘却曲線と同様、https://zhuanlan.zhihu.com/p/274352214

 https://zhuanlan.zhihu.com/p/274352214

 

これも常識に沿ったもので、やはり昔聞いた音は聴き手の心や記憶に印象を残し、時間が短いほど印象は深くなります

 

おすすめ

転載: blog.csdn.net/book_bbyuan/article/details/115763197