0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

同じ60dBでもA特性とC特性で値が違う理由。オクターブバンド分析で騒音対策を決める

0
Posted at

「え、音って周波数ごとに分解できるの?」
「なんで同じ60dBなのに、A特性とC特性で数値が違うの?」

答えは「人間の耳は周波数によって感度が違うから」 です。

たとえば、エアコンの室外機の「ブーン」という低音(125Hz)と、金属を叩く「キーン」という高音(4kHz)。同じ大きさの音でも、人間には高音のほうが「うるさく」感じます。この感覚の差を数値化するのが、オクターブバンド騒音解析です。

今回解説するのは、ブラウザ上でリアルタイム計算できるオクターブバンド騒音解析シミュレーター。ただの計算機ではありません。9つの周波数帯域の入力から、A特性・C特性補正、Zwicker騒音度、NC曲線適合チェックまでを一発で評価します。

この記事では、数式の導出からJavaScript実装、現実の測定データでの検証、現場の落とし穴までを完全解説します。


ざっくり本質——騒音を「レントゲン写真」で診断する

普通の騒音計は、全体の大きさ(総合音圧レベル)しか教えてくれません。これは「熱があるかどうか」だけを測る体温計のようなもの。

一方、オクターブバンド分析は、周波数ごとに音を分解して診断するレントゲン写真です。

「騒音は、どの周波数帯が問題か」を知らなければ、正しい対策は打てない

たとえば、工場の騒音が「低周波(63-250Hz)が卓越」しているのか、「高周波(1k-4kHz)が卓越」しているのかで、対策がまったく変わります。

  • 低周波が問題 → 振動対策(防振ゴム、質量付加)
  • 高周波が問題 → 吸音対策(グラスウール、多孔質材)

このシミュレーターの9つのスライダーを動かすだけで、どの帯域が問題か、どのくらい削れば基準を満たせるかが一目でわかります。


数式で理解する——補正と総合レベルの計算

基本の式:音圧レベル(dB)の定義

ある周波数帯域の音圧レベル $L_i$ [dB] は、基準音圧 $p_0 = 20,\mu\text{Pa}$ に対して:

L_i = 20 \log_{10} \left( \frac{p_i}{p_0} \right)

A特性・C特性補正

人間の聴感特性を模した重み付け。各中心周波数 $f_c$ に対して補正値 $A(f_c), C(f_c)$ がISO 226で定義されています。

補正後の音圧レベル:

L_{A,i} = L_i + A(f_{c,i})
L_{C,i} = L_i + C(f_{c,i})

※補正値は周波数ごとに異なり、A特性は低周波を大きく減衰(-39.4dB @ 31.5Hz)、C特性は低周波をほぼフラットにします。

総合音圧レベル(エネルギー加算)

複数の帯域の音圧レベルを合成するには、エネルギー(パワー)で加算します。対数スケールのdBを一旦リニアなパワー比率に戻し、合計してから再びdBに変換:

L_{\text{total}} = 10 \log_{10} \left( \sum_{i=1}^{9} 10^{L_i / 10} \right)

これが最も重要な式です。直感的には「一番大きい帯域が支配的」ですが、複数の帯域が同程度のレベルだと、合計は各帯域より2〜3dB大きくなります。

Zwicker騒音度(sone)の近似計算

厳密なZwickerラウドネスは臨界帯域とマスキング効果を考慮しますが、このシミュレーターでは簡易的に以下の関係を用いています:

S = 2^{(L_{\text{total,A}} - 40) / 10}
  • $S$ が1 sone = 40 phon(40dBの1kHz純音と同じうるささ)
  • 10dB上がるとラウドネスが2倍($S$ が2倍)

NC曲線適合チェック

NC(Noise Criteria)曲線は、各周波数帯域の許容最大値を定義します。NC-30の場合、各帯域の上限値は以下の近似式で与えられます:

\text{NC\_limit}(f) = a \cdot \log_{10}(f) + b

(係数 $a, b$ はNC値と周波数帯域ごとに異なる)

適合判定は単純:すべての帯域で $L_i \leq \text{NC_limit}(f_{c,i})$ なら合格。


コードで実装する——JavaScriptで再現

それでは、シミュレーターの核心計算をJavaScriptで実装します。ブラウザの開発者コンソールでそのまま動かせます。

/**
 * オクターブバンド騒音解析 核心計算
 * 9つの帯域(31.5, 63, 125, 250, 500, 1k, 2k, 4k, 8k Hz)を入力
 */

// 1. 中心周波数とA特性・C特性補正値(ISO 226準拠)
const BANDS = [
  { fc: 31.5, A: -39.4, C: -3.0 },
  { fc: 63,   A: -26.2, C: -0.8 },
  { fc: 125,  A: -16.1, C: -0.2 },
  { fc: 250,  A: -8.6,  C:  0.0 },
  { fc: 500,  A: -3.2,  C:  0.0 },
  { fc: 1000, A:  0.0,  C:  0.0 },
  { fc: 2000, A:  1.2,  C: -0.2 },
  { fc: 4000, A:  1.0,  C: -0.8 },
  { fc: 8000, A: -1.1,  C: -3.0 }
];

// 2. 総合音圧レベル計算(エネルギー加算)
function calcTotalLevel(levels) {
  // levels: 各帯域のdB値の配列(長さ9)
  const sumPower = levels.reduce((acc, L) => {
    return acc + Math.pow(10, L / 10);
  }, 0);
  return 10 * Math.log10(sumPower);
}

// 3. A特性・C特性補正後の総合レベル
function calcWeightedTotal(levels, weightType) {
  const weighted = levels.map((L, i) => {
    const correction = weightType === 'A' ? BANDS[i].A : BANDS[i].C;
    return L + correction;
  });
  return calcTotalLevel(weighted);
}

// 4. Zwicker騒音度(簡易版)
function calcZwickerSone(LA_total) {
  // LA_total: A特性総合音圧レベル [dBA]
  return Math.pow(2, (LA_total - 40) / 10);
}

// 5. NC曲線適合チェック(NC-30の例)
function checkNCCompliance(levels, ncTarget) {
  // NC曲線の上限値(簡易近似:実測値に近い係数)
  const ncLimits = {
    31.5:  ncTarget - 10,
    63:    ncTarget - 5,
    125:   ncTarget - 2,
    250:   ncTarget,
    500:   ncTarget + 2,
    1000:  ncTarget + 3,
    2000:  ncTarget + 2,
    4000:  ncTarget,
    8000:  ncTarget - 2
  };
  
  const results = levels.map((L, i) => {
    const limit = ncLimits[BANDS[i].fc];
    return {
      fc: BANDS[i].fc,
      level: L,
      limit: limit,
      pass: L <= limit
    };
  });
  
  const allPass = results.every(r => r.pass);
  return { allPass, details: results };
}

// ---- 実行例 ----
const inputLevels = [65, 62, 58, 55, 52, 50, 48, 45, 42]; // 各帯域のdB値

console.log('入力レベル [dB]:', inputLevels);
console.log('総合音圧レベル:', calcTotalLevel(inputLevels).toFixed(1), 'dB');
console.log('A特性総合:', calcWeightedTotal(inputLevels, 'A').toFixed(1), 'dBA');
console.log('C特性総合:', calcWeightedTotal(inputLevels, 'C').toFixed(1), 'dBC');

const LA_total = calcWeightedTotal(inputLevels, 'A');
console.log('Zwicker騒音度:', calcZwickerSone(LA_total).toFixed(2), 'sone');

const ncResult = checkNCCompliance(inputLevels, 30);
console.log('NC-30適合:', ncResult.allPass ? '✅ 合格' : '❌ 不合格');
ncResult.details.forEach(r => {
  console.log(`  ${r.fc}Hz: ${r.level}dB / 上限${r.limit}dB ${r.pass ? 'OK' : 'NG'}`);
});

実行結果の例:

入力レベル [dB]: [65, 62, 58, 55, 52, 50, 48, 45, 42]
総合音圧レベル: 68.0 dB
A特性総合: 60.2 dBA
C特性総合: 67.6 dBC
Zwicker騒音度: 4.29 sone
NC-30適合: ❌ 不合格
  31.5Hz: 65dB / 上限20dB NG  ← 低周波が大幅超過!
  63Hz: 62dB / 上限25dB NG
  ...

注目すべき点:

  • 総合レベル68dBなのに、A特性は60.2dBAと約8dB低い → 低周波が支配的だから
  • C特性は67.6dBCと総合レベルに近い → C特性は低周波を減衰しない
  • NC-30には程遠い → この騒音は「低周波の多い」環境騒音

数値例で確かめる——実際の測定データで検証

実際の工場騒音測定データを使って検証してみましょう。

測定条件:変圧器室(トランスから1m、床上1.5m、暗騒音補正済み)

周波数 [Hz] 測定値 [dB]
31.5 72
63 68
125 63
250 58
500 55
1000 52
2000 48
4000 44
8000 40

計算過程:

  1. 総合音圧レベル:

    L_{\text{total}} = 10 \log_{10} (10^{7.2} + 10^{6.8} + 10^{6.3} + 10^{5.8} + 10^{5.5} + 10^{5.2} + 10^{4.8} + 10^{4.4} + 10^{4.0})
    

    各項を計算:

    • 31.5Hz: $10^{7.2} = 1.58 \times 10^7$
    • 63Hz: $10^{6.8} = 6.31 \times 10^6$
    • 125Hz: $10^{6.3} = 2.00 \times 10^6$
    • 250Hz: $10^{5.8} = 6.31 \times 10^5$
    • 500Hz: $10^{5.5} = 3.16 \times 10^5$
    • 1kHz: $10^{5.2} = 1.58 \times 10^5$
    • 2kHz: $10^{4.8} = 6.31 \times 10^4$
    • 4kHz: $10^{4.4} = 2.51 \times 10^4$
    • 8kHz: $10^{4.0} = 1.00 \times 10^4$

    合計:$2.53 \times 10^7$

    L_{\text{total}} = 10 \log_{10} (2.53 \times 10^7) = 10 \times 7.403 = 74.0 \text{ dB}
    
  2. A特性補正後の各帯域:

    周波数 測定値 A補正 補正後
    31.5 72 -39.4 32.6
    63 68 -26.2 41.8
    125 63 -16.1 46.9
    250 58 -8.6 49.4
    500 55 -3.2 51.8
    1k 52 0.0 52.0
    2k 48 1.2 49.2
    4k 44 1.0 45.0
    8k 40 -1.1 38.9

    A特性総合:$10 \log_{10} (10^{3.26} + 10^{4.18} + ... + 10^{3.89}) = 57.4 \text{ dBA}$

  3. C特性補正後の各帯域:
    C特性は低周波をほとんど減衰しないため、C特性総合は73.8 dBC(総合レベルに近い)

  4. 結果の解釈:

    • L_total = 74.0 dB(物理的な大きさ)
    • L_A = 57.4 dBA(人間の聴感では「意外と静か」)
    • L_C = 73.8 dBC(低周波が強い証拠)
    • L_C - L_A = 16.4 dB → 低周波が極めて卓越

    「耳にはあまり響かないけど、体に圧迫感がある」 という変圧器室の典型的な特徴が数値に現れています。


シミュレーターで遊ぶ——3つの実験

実験1:低周波 vs 高周波、同じ総合レベルでもA特性が違う

設定:

  • ケースA:31.5Hzだけ80dB、他は50dB
  • ケースB:4kHzだけ80dB、他は50dB

結果:

  • ケースA:L_total ≈ 80dB, L_A ≈ 41dBA(低周波はA特性で大幅カット)
  • ケースB:L_total ≈ 80dB, L_A ≈ 81dBA(高周波はA特性で増幅)

なぜ? → A特性は31.5Hzで-39.4dBも減衰するのに対し、4kHzでは+1.0dB。同じ80dBでも、高周波のほうが人間には「約40dBも大きく」聞こえる。

実験2:NC曲線を突破する帯域を特定する

設定:

  • すべての帯域をNC-30の上限値ギリギリに設定
  • 125Hzだけ+5dBする

結果:

  • 125HzがNC-30曲線を超える → 不合格
  • 他の帯域はすべて合格ライン内

現場での意味:NC曲線は「1つでも超えたらアウト」。125Hzの+5dBをどう削るかが対策の焦点になります。この帯域は空調ダクトの共鳴周波数に一致することが多く、ダクトサイズ変更や消音器設置の判断材料に。

実験3:Zwicker騒音度の非線形性を体感

設定:

  • 全帯域40dB(均一)→ L_A ≈ 40dBA → 1 sone(基準)
  • 全帯域50dB(+10dB)→ L_A ≈ 50dBA → 2 sone(2倍!)

なぜ? → Zwicker騒音度は $S = 2^{(L_A - 40)/10}$。10dB上がるとラウドネスが2倍になるという非線形性を表現しています。つまり、「10dB大きい」=「2倍うるさい」。


現場でハマるポイント——3つの落とし穴

1. 「総合レベルが小さい=静か」は間違い

低周波が卓越した騒音では、総合レベルが70dBでもA特性では50dBA程度。人間の耳には「静か」でも、体には振動として感じられる。

対策:必ずA特性とC特性の差(L_C - L_A)を確認。10dB以上差があれば低周波対策が必要。

2. 1つの帯域を10dB上げても総合レベルは1dBしか変わらない

すべての帯域が60dBの状態で、125Hzだけ70dBにすると:

  • 総合レベル:60.4dB → 61.4dB(たった1dB)
  • しかし、NC曲線はこの1dBで突破される

教訓:「たかが1dB」と軽視してはいけない。特にNC曲線適合が求められる設計では、各帯域の細かい調整が合否を分ける。

3. GIGO(ゴミを入ればゴミが出る)

このシミュレーターは入力された9つの値が正しいことが全ての前提。

  • 騒音計のマイク向きを間違えると、特に高周波で誤差大
  • 風防なしで屋外測定すると、低周波に風雑音が混入
  • 暗騒音の補正を忘れると、特に低レベル帯域で過大評価

実務の鉄則:測定前に校正、測定後に暗騒音補正、そして複数回測定して再現性を確認。


まとめ——騒音対策の「解像度」を上げる

  1. オクターブバンド分析は「騒音のレントゲン写真」:全体の大きさだけでなく、どの周波数帯が問題かを特定できる
  2. A特性とC特性の差が低周波騒音の指標:差が大きいほど「体に響く騒音」
  3. NC曲線は「1つでも超えたらアウト」の厳格な設計基準:どの帯域を削るかが対策の核心
  4. Zwicker騒音度は「うるささ」を2倍則で表現:10dB上がるとラウドネス2倍

そして、理論を実践に移す最強のツールがこれ:

▶ オクターブバンド騒音解析シミュレーター
ブラウザで即動作、登録不要。9つのスライダーを動かすだけで、A特性・C特性・Zwicker騒音度・NC曲線適合がリアルタイムに計算されます。

「騒音対策の費用対効果を最大化したい」「設計段階で問題を先取りしたい」——そんなエンジニアに、ぜひ使ってほしいツールです。

NovaSolverでは1,600以上の工学シミュレーターを無料公開中 👉 一覧はこちら

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?