MP3と心理音響 — 「聞こえない音」の科学
MP3が捨てているのは「無い音」ではなく「有るのに聞こえない音」です。最小可聴閾・臨界帯域・マスキングの広がりという耳の穴を測る心理音響モデルを式まで降りて解説し、SMRからビット割り当て、MP3エンコーダの二重ループとビットリザーバまでつなげます。
昼の空にも星は出ている
昼に星が見えないのは、星が消えているからではありません。太陽が明るすぎて、そこにある光が知覚に届かないだけです。耳でも同じことが起きます。これがマスキングで、MP3が捨てているのは「無い音」ではなく、有るのに聞こえない音です。
前の記事音声圧縮を1からでは、変換(MDCT)→量子化→エントロピー符号化という骨格を追いました。この記事はその真ん中、「どの周波数帯をどれだけ雑に丸めてよいか」を毎フレーム決めている心理音響モデルだけを取り出します。「128kbps」という一行の設定が、実は無数の判定の平均値でしかないと見えてきます。
耳は穴だらけの測定器
人間の聴覚は感度こそ高性能ですが、測定器としては欠陥だらけです。肝心なのは、その欠陥が再現性を持って測れるという一点。穴は3種類あります。
- 静寂時最小可聴閾(絶対閾) — 小さすぎる音は聞こえない。しかもその基準は周波数で桁違いに違う
- 同時マスキング — 大きな音が鳴っている最中、周波数の近い小さな音が聞こえない
- 継時マスキング — 大きな音の直後(とわずかに直前)の小さな音が聞こえない
1つ目から。静かな部屋で音量を上げていくと、ある大きさで初めて音が知覚されます。この境界を周波数ごとに描くとU字型になり、3〜4kHz付近で最も低く(=最も敏感で)、両側に急に立ち上がります。谷がここに来るのは、外耳道が長さ2.5cmほどの片側が閉じた管として共鳴するから。悲鳴がこの帯域に集中しているのは偶然ではありません。
この曲線はTerhardtの近似式としてよく使われます。
は周波数(Hz)、 はその周波数で聞こえ始める音圧レベルです。つまり3つの部品の足し算で、第1項が低音側の壁、第2項が3.3kHz付近をえぐる谷、第3項が高音側の壁。この曲線より下の成分は、まるごと捨てても誰も気づきません。
臨界帯域 — 耳が持っている周波数の物差し
内耳の蝸牛に巻かれた基底膜は、入口側が硬く狭く、奥ほど柔らかく広い。高い音は入口を、低い音は奥を振動させる——位置が周波数に対応する分析器です。
ただし分解能は有限で、膜の一点はある幅を持って反応します。つまり耳は帯域通過フィルタが並んだフィルタバンクで、その1本の幅が臨界帯域です。幅は500Hz以下でおよそ100Hz、それより上では中心周波数のおよそ20%。20Hz〜20kHzが24〜25本で覆いきれてしまいます。「20kHzまで聞こえる」と言っても、区別できる升目は25個ぶんです。
この升目を1目盛りとする座標がBark尺度で、ZwickerとTerhardtの近似式が標準的です。
が周波数 のBark値で、 が1増えると臨界帯域ちょうど1本ぶんです。要するに、ヘルツという物理の物差しを臨界帯域という耳の物差しに貼り替える変換で、低音側は引き伸ばされ高音側は圧縮されます。この軸の上ではマスキングの広がりがほぼ直線になります。
コーデックが「帯域ごとに丸めの粗さを変える」と言うときの帯域は、この臨界帯域に沿って切られています。MP3ではscalefactor bandと呼ばれ、長ブロックで21本です。
同じ発想は画像にもあります。JPEGの量子化テーブルは、いわば視覚版の心理音響モデルを固定表に焼き込んだもの。紙の上で音は鳴らせないので、「丸めを粗くすると何が起きるか」はまず目で確かめてください。
コメント
コメントにはログインが必要です