MP3 の圧縮技術の概要

MP3 とは ?

MPEG

メディアデータ (動画や音声) は, テキストデータと比較すると, 非常に大きなデータサイズです. したがって, データを小さくする (圧縮する) ことは不可欠です.

そして, データを圧縮するには, 複雑な算術計算が必要になります. どのように算術計算するかによって, データの形式 (コーデック) が異なってきます.

MPEG (Moving Picture coding Experts Group) は, その計算を仕様として標準化した規格の 1 つです. MPEG では, 用途に合わせて, MPEG-1, MPEG-2, MPEG-4 の 3 種類が標準化されています.

MPEG-1

MPEG-1 は, テレビ電話などで利用されていた, H.261 という規格をもとにして規格化されたデータ形式です. MPEG-1 の画質は, 一般的なテレビやビデオと同程度とされています.

MPEG-2

MPEG-2 は, MPEG-1 を改良し, 放送用として十分と言える程度の高画質を目指して規格化されました. MPEG-2 は, DVD やデジタル BS 放送などのデータ形式として, 幅広く利用されています.

MPEG-4

MPEG-4 は, MPEG-2 よりもさらに圧縮率を向上させて, テレビ電話やインターネットなどでも利用できるように改良した規格です. MPEG-4 では, 用途によって品質を選択できるのが大きな特徴です.

MPEG オーディオ

MPEG は映像のための MPEG ビデオと, 音声のための MPEG オーディオの 2 つの規格に大きく分類されます.

MPEG-1 オーディオ

MPEG-1 オーディオでは, Layer I, Layer II, Layer III の 3 つが定義されています.

Layer I

Layer I は, MPEG オーディオの基礎となる技術です. 音のピッチを 32 分割して, 人間の聴覚には聴こえない高すぎる音や, 低すぎる音を取り除くことで, データを圧縮します.

Layer II

Layer II では, データのまとめかたを改良することで, Layer I よりもさらに圧縮率を高めています.

Layer III

Layer III では, 人間の聴覚にはノイズとして知覚されてしまう部分を修復するなどの処理を追加することで, クリアな音質を実現します. また, Layer III を使うと, もとのサイズの 1 / 10 程度までデータを圧縮できます. MP3 は, この MPEG-1 オーディオ Layer III が使われています.

MPEG-2 オーディオ

MPEG-2 オーディオには, MPEG-2/BC (Backward Compatible) と MPEG-2/AAC (Advanced Audio Codec) の 2 つの規格があります. MPEG-2/BC の基本的な仕組みは MPEG-1 オーディオと変わりません.

MPEG-2/AAC は, 高音質・高圧縮を求めるために, MPEG-2/BC のあとに制定された規格です. MPEG-2/AAC は. 大きな音の部分に雑音を集中させたり, 一定の時間内の次のデータを予測したりすることで, データサイズ大幅に削減します (MPEG-1 オーディオ Layer I と比較して, データサイズを約 70 % にできます).

MPEG-4 オーディオ

MPEG-4 オーディオでは, 音声の規格を用途によって, いくつか定められたものから 1 つ, 適切なものを選択することができます. 音楽の再生に利用されるのは, MPEG-2/AAC と TwinVQ の 2 つです.

MPEG-2/AAC は, MPEG-2 オーディオとまったく同じ方式でデータを圧縮します.

TwinVQ は, 複数のデータをまとめて, その類似性を発見するという方法でデータを圧縮します.

より一般的に利用されているのは, MPEG-2/AAC で, MP4 と呼ばれることもあります.

圧縮の基本

データサイズを小さくするには, もとのデータサイズそのものを少なくして実現することも可能です. サンプリング周波数と量子化ビットを小さな値にすることです. しかしながら, この方法では, 音質が低下してしまいます.

そこで, 音質を低下させずに, データを圧縮する技術が必要です.

ランレングス圧縮

ランレングス圧縮とは, 同じデータが続く部分の個数を数えるという方法で圧縮します. 例えば, 0000110000001 というビット列で並ぶ, 13 個のデータがあるとします. このようなデータは, 表現を変えて, 0 が 4 つ, 1 が 2 つ, 0 が 6 つ, 1 が 1 つと表現することもできます.

この方法であれば, 0000 … のような, 0 が 50 個並んだデータを表現するには, すべてのデータを記述しなくても, 0 が 50 個と記述することで表現可能で, データサイズを小さくすることができます.

しかしながら, 同じ値が連続しない場合は, むしろ大きくなってしまう可能性もあります. 音をデジタル化したデータの場合, 同じ値が続くことは稀なので, ランレングス圧縮はあまり効果的ではありません.

デルタ PCM

音をデジタル化したデータは, 急激に値が変化することは少なく, 緩やかに値が変化するという性質があります. この性質を利用して, 値そのものを保存するのではなく, 前の値との差分だけを保存するという圧縮技術が, デルタ PCM です.

例えば, 100, 103, 108, 114, 109, 98 という 6 個のデータがあれば, その差分を取得して, +100, +3, +5, +6, -5, -11 のように表現します.

数値が小さくなるということは, 必要なビット数が少なくなるのでデータを圧縮することができます.

log-PCM

人間の聴覚は, 音を対数的に知覚します (フェヒナーの法則). 対数的に知覚するとは, 音の大きさが大きい場合には, 小さな音量変化に気づかず, 音の大きさが小さい場合には, より小さな音量変化に気づくということです.

そこで, 音が小さい部分では細かく, 音が大きい部分では粗く量子化することで圧縮することができます.

可逆圧縮と不可逆圧縮

データの圧縮には, 可逆圧縮と不可逆圧縮の 2 つに分類可能です.

可逆圧縮とは, もとのデータの変化はさせず, 展開したときに, もとのデータに合致する方式です.

不可逆圧縮とは, もとのデータを変化させ, 展開したときに, もとのデーターに完全合致しない方式です. MP3 は, 不可逆圧縮が利用されています.

MP3 の仕組み

MP3 では, データを圧縮するときに, 圧縮方法をいくつか設定可能です. したがって, MP3 といっても, いくつか種類があり, どのようにしてデータを生成するかによって, 音質が異なってきます.

サンプリング周波数

MP3 では, サンプリング周波数として, 32 kHz, 44.1 kHz, 48 kHz のいずれかを選択できます.

ビットレート

MP3 では, 32 kbps ~ 320 kbps の範囲で設定できます.

モード

MP3 では, モノラルとステレオのどちらでも選択可能です. モードには, 以下の 5 種類があります.

MP3 のモード
モード概要
シングルチャンネル モノラル
デュアルチャンネル 単独のモノラル信号が 2 つある. ステレオと似ているが, 必ずしも, スピーカーの左右から同時に再生されるわけではない (1 チャンネルが日本語, もう 1 チャンネルが英語の場合など)
ステレオ 左チャンネルと右チャンネルのデータが個別に入っている
インテンシティステレオ ステレオで構成されているが, 左チャンネルと右チャンネルで, 一部の同じデータを利用して, 音量差だけでステレオ効果をだす
MS ステレオ 左チャンネルと右チャンネルの大きさの差と和を計算して, その結果でデータを圧縮する

一般的に, MP3 を音楽であつかう場合,

  • サンプリング周波数 44.1 kHz
  • ビットレート 128 kbps or 192 kbps
  • モード MS ステレオ

で利用されることがほとんどです.

MP3 のデータサイズ

MP3 の大きな特徴として, ビットレート固定があります. したがって, 128 kbps の場合, 1 分のデータは, およそ 1 MB になります.

MP3 の圧縮

MP3 では, 出来るだけ音質を保ったままデータを小さくするために, 以下のフローで, データの性質を調べながら, 人間の聴覚に影響がない部分だけを除去しています.

  • フーリエ変換・(変形) 離散コサイン変換 (MDCT)
  • サブバンド分解
  • 心理聴覚評価
  • 量子化
  • ハフマン符号

フーリエ変換・(変形) 離散コサイン変換 (MDCT)

サブバンド分解をするにも, 心理聴覚評価をするにも, 時間軸に対する振幅ではどの周波数成分をあつかえばよいのかわからないので, 時間軸に対する振幅を, 周波数軸に対する振幅 (振幅スペクトル) に変換する必要があります. そのための数学的処理が, フーリエ変換です.

フーリエ変換

しかしながら, フーリエ変換は, 数式上は -∞ から ∞ の積分 (和分) として処理するので, コンピュータ上で実現するためには, どこかで計算を打ち切る必要があります. この打ち切りによって, 元の波形に合成したときに (逆フーリエ変換) , 誤差が発生し, 完全に元の波形には戻らなくなります.

$X(f) = \int_{-\infty}^{\infty}x(t)\exp(-j2{\pi}ft)dt\ \ (-\infty \leqq f \leqq \infty)$

この問題を解決するために, 区間の継ぎ目を調整する様々な手法が考案されました. そのうちの 1 つが, MP3 で利用されている (変形) 離散コサイン変換 (Modified Discrete Cosine Transform) であり, 区間を重ね合わせて誤差を小さくする手法となっています.

$X(k) = \sum_{n=0}^{2N-1}x(n)\cos\left(\frac{{\pi}}{N}\left(n+\frac{1}{2}+\frac{N}{2}\right)\left(k+\frac{1}{2}\right)\right)$

サブバンド分解

MP3 で圧縮する最初の処理です. 基準となるサンプリング周波数の 1 / 32 のサンプリング周波数でサンプリングしなおします.

例えば, 44.1 kHz でサンプリングする場合, サンプリング定理により 22.05 kHz までのデータが含まれます. MP3 では, この周波数帯域を 32 分割して (0 - 689.0625 Hz, 689.0625 Hz - 1378.125 Hz … 21360.9375 Hz - 22050 Hz), それぞれの周波数帯域において, 1 / 32 のサンプリング周波数 (1375 Hz) で, 再度サンプリングしなおします.

サブバンド分解する理由は, 音には以下の特性があるからです.

  • 音楽では, 周波数帯域に偏りがある
    • 振幅の小さな帯域を除去する
  • 周波数によって人間の知覚できる音が違う
    • 高い周波数の場合, 音量変化には鈍感, 低い周波数の場合, 音量変化に敏感

心理聴覚評価

心理聴覚評価は, 人間の聴覚の性質をもとに, どの周波数帯域を削ってもよいかを決定する MP3 の中核となるものです.

ちなみに, どの部分を削除するかという判断基準は心理聴覚評価によって決まりますが, MP3 の仕様で定義されているものは一例であり, 規約ではないので, MP3 のエンコーダによって異なります. これが, エンコーダによって音質が異なる理由でもあります.

心理聴覚評価では, 最小可聴限界とマスキング効果を利用して, どの音が聴こえない (聴こえにくい) のかを判断します.

最小可聴限界

最小可聴限界とは, 静粛時に聴くことができる音圧 (dB) の範囲のことです.

聴くことができる範囲は, 音の大きさだけではなく, 周波数によっても異なります. 人間の聴覚がもっともよく反応する周波数帯域は, 2 kHz ~ 5kHz の範囲です.

最小可聴限界を下回る音圧は聴くことができないので, データを削除することができます.

マスキング効果

大きな音が発生しているときに, 小さな音がかき消されることはおそらくほとんどの方が経験的に知っています. これは, マスキング効果と呼ばれるものです. このとき, 大きな音をマスカー, 小さな音をマスキーと呼びます.

マスキング効果の影響範囲もまた, 音の大きさだけでなく, 周波数にも関係します. マスカーとマスキーは, 周波数が近いほど大きな効果を発揮します.

マスカーがおよぼす周波数範囲は, 1 kHz 以下では, 約 100 Hz の範囲内です. 1 kHz 以上になると, 周波数に比例して範囲が大きくなります.

また, マスキング効果は, 同時に音が発生したときだけとは限らず, 時間的にも持続します (持続時間は, 1 / 100 程度です). 例えば, 大きな音が発生した直後の小さな音がかき消されるのはもちろん, 小さな音が発生したあとに大きな音が発生すると, 先に発生した小さな音もかき消されます.

マスキング効果によって, かき消される小さな音は聴きとれない音なので, データを削除することができます.

量子化

量子化では, それぞれの周波数成分の振幅に対して, 数値データを割り当てていきます. このとき, 直接数値を割り当てるのではなく, 適当な値で除算して値を小さくします. どれだけ除算するかは, 心理聴覚評価によって決定されます.

心理聴覚評価では, 人間の聴覚にとって重要な周波数帯域は小さな値で除算して, そうでない周波数帯域は大きな値で除算します. そうすることで. 重要でない周波数帯域の振幅は, その値を表現するのに必要なビット数が減ります.

ハフマン符号

ハフマン符号は, 音の圧縮だけでなく, さまざまなデータに利用される汎用的な圧縮方法です. ハフマン符号は可逆圧縮であるので, 展開したときに, もとのデータと完全に合致します. したがって, メディアデータだけではなく, テキストデータにも有効な圧縮です.

ハフマン符号を簡単に説明すると,

  • 発生確率の高いものほど, 短いビット数で表現できる数値を割り当てる
  • 発生確率の低いものほど, 長いビット数で表現できる数値を割り当てる

とすることで, 全体のデータを小さくすることができます.

したがって, 発生確率が偏っているケースほど, 圧縮率が高くなります. 逆のケースの場合, あまり効果はありません. 実際に, どのように値を割り当てるかはハフマン木によって決定できます. そして, MP3 では, ハフマン木が仕様によって決められています.

参考

Share Comments
comments powered by Disqus