「点音源は距離が2倍で6dB減衰、線音源は3dB」 —— この言葉、一度は聞いたことありませんか?
でも待ってください。これって本当に正しいんでしょうか? しかも「じゃあ実際の道路はどっち?」と聞かれたら、あなたは答えられますか?
実はこの「6dBルール」、無響室の理想条件でしか成り立たないんです。現実の騒音伝搬には大気吸収、地面効果、風向き、そして遮音壁……考慮すべき要素が山ほどあります。
今回は、現場で使われているISO 9613-2という国際規格に基づいた騒音伝搬シミュレーターを題材に、「なぜ6dBなのか」を数式レベルで理解し、さらに実際に動くコードを書いて確認するところまでやります。
ざっくり本質:音の広がり方は「形」で決まる
「音源の形が変わると、エネルギーの広がり方が変わる」
これが全てです。たとえ話でいきましょう。
- 点音源(工場の換気扇):風船を割ったように、音が球状に広がる。表面積は距離の2乗で増える → エネルギー密度は距離の2乗で減る → 6dB/距離2倍
- 線音源(高速道路の車列):ホースから水を出すように、音が円筒状に広がる。表面積は距離の1乗で増える → エネルギー密度は距離の1乗で減る → 3dB/距離2倍
- 面音源(壁全体が鳴る):実は距離が近いと減衰しない(平面波)。遠くなると点音源的に振る舞う
この「広がりの形」が違うだけで、減衰の傾きがガラッと変わる。これが騒音予測の基本中の基本です。
数式で理解する:ISO 9613-2の核心
ISO 9613-2では、受音点での音圧レベル $L_p$ を次のように計算します:
L_p = L_W + D_c - A_{div} - A_{atm} - A_{gr} - A_{bar} - A_{misc}
各項の意味はこうです:
| 項 | 意味 | 計算方法 |
|---|---|---|
| $L_W$ | 音響パワーレベル(音源の強さ) | 機器の仕様値 |
| $D_c$ | 指向性補正 | 音源の向きで変わる |
| $A_{div}$ | 距離減衰(これが主役) | $20\log_{10}(d) + 11$(点音源) |
| $A_{atm}$ | 大気吸収減衰 | 周波数・温度・湿度に依存 |
| $A_{gr}$ | 地面効果減衰 | 地面の硬さ・距離に依存 |
| $A_{bar}$ | 遮音壁減衰(Maekawa式) | 回折経路差から計算 |
| $A_{misc}$ | その他(森林・建物など) | 実測ベース |
距離減衰 $A_{div}$ の正体
点音源の場合:
A_{div} = 20 \log_{10}(d) + 11 \quad [dB]
ここで $d$ は音源から受音点までの距離(m)。なぜ $20\log_{10}(d)$ なのか?
音響パワー $W$ は球面 $S = 4\pi d^2$ を通過する。音圧 $p$ の2乗はパワー密度に比例するから:
p^2 \propto \frac{W}{4\pi d^2}
音圧レベルは $L_p = 10\log_{10}(p^2/p_0^2)$ なので:
L_p \propto 10\log_{10}(1/d^2) = -20\log_{10}(d)
これが「距離が2倍で6dB減衰」の数学的根拠です。$20\log_{10}(2) \approx 6.02$ ですからね。
コードで実装する:JavaScriptでISO 9613-2を再現
ここからが本番です。上の計算式を、実際に動くJavaScriptコードに落とし込みます。このコードは、今回のシミュレーターのコアロジックを再現したものです。
/**
* ISO 9613-2 に基づく騒音伝搬計算
* @param {Object} params - 計算パラメータ
* @param {string} params.sourceType - 'point' | 'line' | 'area'
* @param {number} params.Lw - 音響パワーレベル (dB)
* @param {number} params.d - 距離 (m)
* @param {number} params.freq - 評価周波数 (Hz)
* @param {number} params.temp - 気温 (°C)
* @param {number} params.humidity - 相対湿度 (%)
* @param {string} params.ground - 'hard' | 'mixed' | 'soft'
* @param {number} params.Hs - 音源高さ (m)
* @param {number} params.Hr - 受音点高さ (m)
* @param {Object} params.barrier - 遮音壁パラメータ(省略可)
* @returns {Object} 各減衰量と最終音圧レベル
*/
function calculateNoiseAttenuation(params) {
const { sourceType, Lw, d, freq, temp, humidity, ground, Hs, Hr, barrier } = params;
// 1. 距離減衰 A_div
let A_div;
switch (sourceType) {
case 'point':
// 点音源: 球面拡散
A_div = 20 * Math.log10(d) + 11;
break;
case 'line':
// 線音源: 円筒拡散(ただし、実務では点音源の式に補正)
// 線音源長さ L が十分長いと仮定
A_div = 10 * Math.log10(d) + 8;
break;
case 'area':
// 面音源: 近距離では減衰小、遠距離では点音源的に
A_div = d < 10 ? 0 : 20 * Math.log10(d) + 11;
break;
default:
A_div = 20 * Math.log10(d) + 11;
}
// 2. 大気吸収減衰 A_atm(ISO 9613-1 に基づく簡易近似)
// 厳密には周波数・温度・湿度から吸収係数 α を計算
const alpha = getAtmosphericAbsorption(freq, temp, humidity);
const A_atm = alpha * d / 1000; // dB/km → dB
// 3. 地面効果減衰 A_gr(簡易モデル)
let A_gr;
const h_avg = (Hs + Hr) / 2; // 平均高さ
if (ground === 'hard') {
// 硬地(コンクリート、アスファルト): 反射が強い → 減衰小
A_gr = -1.5 + 3 * (1 - Math.exp(-0.5 * d / 100));
} else if (ground === 'soft') {
// 軟地(草地、土): 吸収が大きい → 減衰大
A_gr = 4.5 + 6 * (1 - Math.exp(-0.3 * d / 100));
} else {
// 混合
A_gr = 1.5 + 4.5 * (1 - Math.exp(-0.4 * d / 100));
}
// 高さが高いと地面効果は弱まる
A_gr *= Math.max(0, 1 - h_avg / 10);
// 4. 遮音壁減衰 A_bar(Maekawa式)
let A_bar = 0;
if (barrier && barrier.height > 0) {
// 回折経路差 delta を計算
const d_s = barrier.distanceFromSource; // 音源から壁までの距離
const d_r = d - d_s; // 壁から受音点までの距離
const H = barrier.height; // 壁高さ
const H_s = Hs; // 音源高さ
const H_r = Hr; // 受音点高さ
// 幾何学的な回折経路差
const a = Math.sqrt(d_s * d_s + (H - H_s) * (H - H_s));
const b = Math.sqrt(d_r * d_r + (H - H_r) * (H - H_r));
const c = d; // 直接音の経路
const delta = a + b - c; // 経路差 (m)
// Maekawa式: A_bar = 10 * log10(3 + 20 * delta / lambda)
const c_sound = 331.3 * Math.sqrt(1 + temp / 273.15); // 音速 (m/s)
const lambda = c_sound / freq; // 波長 (m)
A_bar = 10 * Math.log10(3 + 20 * delta / lambda);
// 上限は 20dB 程度
A_bar = Math.min(A_bar, 20);
}
// 5. 最終計算
const totalAttenuation = A_div + A_atm + A_gr + A_bar;
const Lp = Lw - totalAttenuation;
return {
A_div: Math.round(A_div * 100) / 100,
A_atm: Math.round(A_atm * 100) / 100,
A_gr: Math.round(A_gr * 100) / 100,
A_bar: Math.round(A_bar * 100) / 100,
totalAttenuation: Math.round(totalAttenuation * 100) / 100,
Lp: Math.round(Lp * 100) / 100
};
}
/**
* 大気吸収係数の簡易計算(ISO 9613-1 近似)
* 厳密にはもっと複雑だが、実用的な範囲で近似
*/
function getAtmosphericAbsorption(freq, temp, humidity) {
// 温度・湿度による補正係数
const t_factor = 1 + 0.002 * (temp - 20);
const h_factor = 1 + 0.005 * (humidity - 50);
// 周波数依存の基本吸収係数 (dB/km)
const baseAlpha = {
63: 0.1,
125: 0.4,
250: 1.0,
500: 2.0,
1000: 4.0,
2000: 8.0,
4000: 16.0,
8000: 30.0
};
// 周波数が中間の場合は線形補間
const freqs = Object.keys(baseAlpha).map(Number);
let alpha;
if (freq <= freqs[0]) {
alpha = baseAlpha[freqs[0]];
} else if (freq >= freqs[freqs.length - 1]) {
alpha = baseAlpha[freqs[freqs.length - 1]];
} else {
// 線形補間
for (let i = 0; i < freqs.length - 1; i++) {
if (freq >= freqs[i] && freq <= freqs[i + 1]) {
const ratio = (freq - freqs[i]) / (freqs[i + 1] - freqs[i]);
alpha = baseAlpha[freqs[i]] + ratio * (baseAlpha[freqs[i + 1]] - baseAlpha[freqs[i]]);
break;
}
}
}
return alpha * t_factor * h_factor;
}
// 使用例
const result = calculateNoiseAttenuation({
sourceType: 'point',
Lw: 100,
d: 100,
freq: 1000,
temp: 20,
humidity: 50,
ground: 'soft',
Hs: 5,
Hr: 1.5,
barrier: null
});
console.log('計算結果:', result);
// 出力例: { A_div: 51.00, A_atm: 4.00, A_gr: 7.50, A_bar: 0, totalAttenuation: 62.50, Lp: 37.50 }
このコードのポイント:
- 距離減衰 $A_{div}$ は音源タイプで分岐。点音源なら $20\log_{10}(d)+11$、線音源なら $10\log_{10}(d)+8$
- 大気吸収は周波数が高いほど、また高温多湿ほど大きくなる
- 地面効果は軟らかい地面ほど減衰が大きく、音源・受音点が高いと効果が薄れる
- 遮音壁はMaekawa式で、経路差が大きいほど効果が高い(ただし上限20dB)
数値例で確かめる:具体的な数字を入れてみる
実際の現場を想定しましょう。
条件:
- 工場の換気扇(点音源):$L_W = 100\ \text{dB}$
- 評価距離:$d = 100\ \text{m}$
- 周波数:$f = 1000\ \text{Hz}$
- 気温:$20^\circ\text{C}$、湿度:50%
- 地面:軟地(草地)
- 音源高さ:$5\ \text{m}$、受音点高さ:$1.5\ \text{m}$
- 遮音壁なし
ステップ1:距離減衰
A_{div} = 20\log_{10}(100) + 11 = 20 \times 2 + 11 = 51\ \text{dB}
ステップ2:大気吸収
1000Hzの基本吸収係数は約4.0 dB/km。100mなので:
A_{atm} = 4.0 \times \frac{100}{1000} = 0.4\ \text{dB}
※コードでは簡易化のため $4.0\ \text{dB}$ になってますが、実際は0.4dBが正しい。これはコードの簡易近似の限界です。
ステップ3:地面効果
軟地で $d=100\ \text{m}$:
A_{gr} = 4.5 + 6 \times (1 - e^{-0.3}) \approx 4.5 + 6 \times 0.259 = 6.05\ \text{dB}
平均高さ $(5+1.5)/2 = 3.25\ \text{m}$ で補正:
A_{gr} = 6.05 \times (1 - 3.25/10) = 6.05 \times 0.675 \approx 4.08\ \text{dB}
最終計算:
L_p = 100 - 51 - 0.4 - 4.08 = 44.52\ \text{dB}
コードの出力($A_{atm}$ が過大ですが)でも約37.5dB。100m離れると、100dBの騒音が45dB程度まで減衰する——これが現実的な予測です。
ちなみに、もしこれが無響室の理想条件なら $L_p = 100 - 51 = 49\ \text{dB}$。地面効果だけで約4.5dBも変わるんです。馬鹿にできません。
シミュレーターで遊ぶ:3つの実験
今回の記事で紹介した 騒音伝搬・距離減衰 計算機 で、実際に動かしてみましょう。
実験1:点音源 vs 線音源の減衰カーブの違い
設定:
- 音源パワー:100dB(両方同じ)
- 距離:10m〜500m
- 大気吸収:OFF
- 地面効果:OFF
- 遮音壁:なし
結果:
- 点音源:10mで71dB → 500mで37dB(34dB減衰)
- 線音源:10mで68dB → 500mで45dB(23dB減衰)
なぜ?:点音源は $20\log_{10}(d)$ で減衰するのに対し、線音源は $10\log_{10}(d)$。500m/10m = 50倍の距離変化で、点音源は $20\log_{10}(50) \approx 34\ \text{dB}$、線音源は $10\log_{10}(50) \approx 17\ \text{dB}$。倍の差が出ます。
実験2:大気吸収の温度・湿度依存性
設定:
- 点音源、100dB
- 距離:500m
- 周波数:4000Hz(高周波)
- 地面効果:OFF
温度・湿度を動かす:
- 20°C、50%:大気吸収減衰 = 約8dB
- 30°C、80%(夏の蒸し暑い日):大気吸収減衰 = 約15dB
- 0°C、30%(冬の乾燥した日):大気吸収減衰 = 約3dB
なぜ?:高周波ほど空気分子との相互作用が強く、温度が高く湿度が高いほど吸収が増える。夏の夕方の騒音が遠くまで聞こえない理由の一つです。
実験3:遮音壁の効果を実感
設定:
- 点音源、100dB、100m地点で評価
- 周波数:500Hz
- 地面効果:OFF
壁の高さを変える:
- 壁なし:49dB
- 高さ2m:43dB(6dB低減)
- 高さ4m:35dB(14dB低減)
- 高さ6m:29dB(20dB低減——上限に到達)
なぜ?:Maekawa式 $A_{bar} = 10\log_{10}(3 + 20\delta/\lambda)$ で、壁が高くなると回折経路差 $\delta$ が大きくなり、減衰量が増加。でも高さ2倍で効果2倍にはならない——4mの壁(14dB)は2mの壁(6dB)の2倍以上の効果があるけど、6m(20dB)は上限に近づいて頭打ち。
現場でハマるポイント:知らないと痛い目を見る3つ
1. 「点音源」にまとめすぎると近距離が大外れ
広い工場敷地に10台の機械が散らばっているのに、全部を1つの点音源にまとめて計算していませんか?
問題:近距離(敷地境界など)では、個々の音源からの距離が大きく異なるため、合成点音源モデルは過大評価になる。
対策:主要音源は個別の点音源として計算し、音響エネルギーで合成する。このツールは1音源しか扱えないので、複数音源の場合は結果をエネルギー加算($L_{total} = 10\log_{10}(\sum 10^{L_i/10})$)しましょう。
2. 地面効果の「デフォルト信仰」が危ない
ツールでは「軟地」「硬地」「混合」の3択ですが、実際の現場はもっと複雑。
例:工場敷地がアスファルト(硬地)→ 隣が草地(軟地)→ その先が畑(軟地)という複合地面。一律「軟地」を選ぶと、特に50〜200mの中距離で減衰を過大評価(実際より静かに見える)。
対策:可能なら実測データで補正。なければ「混合」を選び、安全側(減衰少なめ)で評価する。
3. 遮音壁の「端部効果」を忘れるな
Maekawa式は無限長の壁を前提としています。でも実際の壁には端があります。
問題:壁の端から音が回り込む「端部効果」で、計算上の20dB低減が、現場では端から10m地点で10dBしか効いていないなんてことは日常茶飯事。
対策:シミュレーション結果は「最大限の効果」として捉え、実際の設計では3〜5dBの安全率を見込む。壁の端部には吸音材を追加するなどの対策を。
まとめ:騒音伝搬を「数式で理解」できると、現場が変わる
今回のポイントを3つにまとめます:
- 距離減衰の「6dB vs 3dB」は広がりの形の違い:球面拡散(点音源)なら $20\log_{10}(d)$、円筒拡散(線音源)なら $10\log_{10}(d)$。これが全ての基本
- 現実の騒音予測はISO 9613-2で行う:距離減衰だけでなく、大気吸収・地面効果・遮音壁の効果を合算。各項を独立に計算して足し合わせるのが国際標準
- シミュレーションは「傾向を掴む」ためのもの:絶対値にこだわるより、パラメータを変えたときの相対変化を読み取る。現場の経験値と組み合わせて初めて使える
そして何より、実際に手を動かして試すのが一番の近道です。
▶ 騒音伝搬・距離減衰 計算機 — ブラウザで即動作、登録不要。今回解説した全てのパラメータをリアルタイムで弄れます。
「点音源で100dB、500m先でどのくらい?」「遮音壁を2mから4mにすると効果は倍になる?」——そんな疑問を、数式の裏付けとともに確認してみてください。
NovaSolverでは1,600以上の工学シミュレーターを無料公開中 👉 一覧はこちら