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 が使われています.

Layer I - Layer III の共通点

共通点としては, 32 バンドのポリフェーズ・サブバンド・フィルタによって, 周波数を 32 分割する処理は共通しています. そして, 周波数帯域ごとに, スケール・ファクタ (信号の強さを表す指数) とビット割り当て情報 (それぞれの周波数帯域ごとに, どの程度の精度で信号を表す) によって, 可変精度でサンプルを符号化します.

Layer I - Layer III の相違点

サンプルするブロックのサイズ (サンプル数) が異なります. また, Layer III では, 後述する MDCT が利用されます. MDCT を利用して各バンドを 12 サンプルずつ変換 (このまとまりをグラニュールと呼びます) して, さらにそれを 2 つ 1 組 (このまとまりをブロックと呼びます) にして処理します.

Layer I, Layer II, Layer III の比較
Layer I Layer II Layer III
符号化データの構造 ブロックごとに符号化 ブロックごとに符号化 ブロックごとに符号化
フィルタ・バンク 32 バンド ポリフェーズ・フィルタバンク 32 バンド ポリフェーズ・フィルタバンク 32 バンド ポリフェーズ・フィルタバンク
サンプル化 スケール・ファクタとビット割り当てをしたあと, 可変精度で符号化 スケール・ファクタとビット割り当てをしたあと, 可変精度で符号化 スケール・ファクタとビット割り当てをしたあと, 可変精度で符号化
1 ブロックのサイズ 384 (32 x 12) サンプル 1152 (32 x 36) サンプル 768 (32 x 12 x 2) サンプル

MPEG-2 オーディオ

MPEG-2 オーディオには, MPEG-2/BC (Backward Compatible) と MPEG-2/AAC (Advanced Audio Coding) の 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/AACTwinVQ の 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 では, 可能な限り音質を保ったままデータサイズを小さくするために, 以下のフローでデータの性質を調べながら, 人間の聴覚に影響がない部分だけを除去しています.

MP3 の圧縮フロー

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

サブバンド分解

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) で, 再度サンプリングしなおします.

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

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

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

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

フーリエ変換

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

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

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

$ \begin{eqnarray} 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) \end{eqnarray} $

心理聴覚評価

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

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

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

最小可聴限界

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

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

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

最小可聴限界

マスキング効果

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

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

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

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

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

マスキング効果

量子化

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

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

ハフマン符号

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

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

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

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

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

また, MP3 では, ハフマン木が仕様によって決められています. したがって, 事前に発生確率を求める必要やハフマン木を生成する必要はありません.

ハフマン木の例

ハフマン木から求めたハフマン符号 (根から葉にむかって数値を並べたビット列)
ハフマン符号
1 000
3 1
4 001
6 01

可逆圧縮は, どんなデータでも小さくすることができるわけではありません. データには, エントロピーという単位があり, それをこえて圧縮するともとに戻せないという限界の大きさがあります. それが, 理論的に不可能なことが, シャノンによって証明されています.

リファレンス

Share Comments
comments powered by Disqus