MP3

提供:MonoBook

MP3(エムピースリー、MPEG-1 Audio Layer-3)とは、音声データを高い圧縮率で扱うために策定されたデジタルオーディオの標準フォーマットです。

MP1とMP2の後続規格ですが互換性はまったくありません。

語源に「MPEG=1」とありますが後継規格の「MPEG-2」でも引き続き使われています。ちなみに「MPEG-3」は「MP3と紛らわしい」という理由で欠番になり「MPEG-4」となりました。ちなみに「.mp4」は動画も含めた汎用的なMPEG-4のファイルフォーマットになりました。

拡張子は「.mp3」、MIMEタイプは「audio/mpeg」です。

特許[編集 | ソースを編集]

MP3の特許期限は2017年4月に切れており現在は自由に利用できます。

圧縮の基本原理[編集 | ソースを編集]

MP3は非可逆圧縮という方式を採用しています。これは、圧縮時にデータの一部を削除して、元のデータには完全には戻らないものの、聴感上の違和感を抑える方法です。その圧縮の効果は、人間の聴覚特性を巧みに利用しています。

主な聴覚特性は以下の通りです。

低音域と高音域は感度が低い:人間の耳は中音域に最も敏感で、極端な低音域や高音域には感度が低いため、これらの領域の詳細な情報は削除しても聞き分けられません。

マスキング効果:ある周波数帯域で大きな音が鳴っている場合、その直前直後や周辺周波数帯域の小さな音は聞こえにくくなります。この現象を周波数マスキングと時間マスキングと呼びます。

可聴領域の限界:人間が聴こえる周波数は、一般的に20ヘルツから20000ヘルツ程度とされています。それ以上の周波数は人間には聞こえないため、削除できます。

圧縮のアルゴリズム詳細[編集 | ソースを編集]

第1段階:フィルタバンクによる帯域分割[編集 | ソースを編集]

PCM形式の元の音声データは、まずフィルタバンク(ポリフェーズフィルタバンク)によって32個のサブバンドに分割されます。この処理により、音声信号を周波数領域に変換するための準備が行われます。各サブバンドは異なる周波数帯域を担当しており、これにより信号が周波数的に整理されます。

第2段階:MDCT変換[編集 | ソースを編集]

フィルタバンクで分割された各サブバンドに対して、MDCT(修正離散コサイン変換、Modified Discrete Cosine Transform)が適用されます。MDCTはDCT(離散コサイン変換)の一種で、信号を時間領域から周波数領域に変換します。DCTはコサイン関数を基底とした変換で、実数係数を出力するという利点があります。

MDCTの特性として「エネルギー集中効果」があります。これは信号の大部分が低周波数成分に集中するため、少量のデータで信号の重要な特徴を効果的に表現できることを意味します。MP3では修正型DCTを使用し、領域の境界でノイズが生じないよう、領域を重複させながら計算が進められます。

第3段階:聴覚心理モデルの適用と量子化[編集 | ソースを編集]

MDCTで得られた周波数成分に対して、聴覚心理モデルに基づいた処理が施されます。このモデルに従って、人間の耳には聞こえないか聞こえにくい周波数成分を特定します。その後、各周波数成分に対して量子化が行われます。

量子化とは、信号の値を粗い精度で表現し直すプロセスです。聞こえやすい周波数成分にはより多くのビットを割き、聞こえにくい成分にはより少ないビットを割き当てます。この適応的な量子化により、限られたビットで効果的に音質を保つことができます。

第4段階:ハフマン符号化[編集 | ソースを編集]

量子化後の係数に対して、ハフマン符号化という可逆圧縮技術が適用されます。ハフマン符号化は、頻繁に出現する値には短いビット列を、稀な値には長いビット列を割り当てることで、全体的なデータ量を削減します。

この一連の処理により、CD品質の音声データ(約1411.2 kbps)は、典型的なMP3の場合、元のデータの約10分の1のサイズまで圧縮されます。

ビットレートとエンコード方式[編集 | ソースを編集]

MP3ファイルは、エンコード時に複数のビットレートを選択できます。ビットレートが高いほど音質は良好になりますが、ファイルサイズは大きくなります。

CBR(固定ビットレート)[編集 | ソースを編集]

CBR(Constant Bit Rate)は、ファイル全体を通じて一定のビットレートを維持する方式です。エンコード時に一定の圧縮率が保たれるため、再生機器との互換性が高く、デコードが安定しやすいという利点があります。ただし、音楽の複雑さが部分によって異なる場合、すべての部分に同じビットレートを割き当てるため、必ずしも効率的ではありません。

VBR(可変ビットレート)[編集 | ソースを編集]

VBR(Variable Bit Rate)は、音楽データの複雑さに応じてビットレートを可変にする方式です。複雑な部分には多くのビットを割き当て、シンプルな部分には少ないビットを割き当てることで、より効率的かつ柔軟な音質を実現できます。ただしVBRでは、再生時間の推定がやや複雑になる場合があります。

ABR(平均ビットレート)[編集 | ソースを編集]

ABR(Average Bit Rate)は、CBRとVBRの中間的な方式で、長期的には平均的なビットレートを保ちながら、短期的には変動させる方法です。

典型的なビットレートは32kbpsから320kbpsの範囲で、音声では64kbps以下のビットレートでは音質が十分に維持できないことが多いとされています。

MP3ファイルの構造[編集 | ソースを編集]

フレーム構造[編集 | ソースを編集]

MP3ファイルは、複数のオーディオフレームから構成されます。各フレームは独立した単位として処理でき、1フレームは通常1152個のサンプルで構成されます。

各オーディオフレームは、4バイトの「フレームヘッダ」から始まります。フレームヘッダには、以下の情報が含まれています。

同期フレーム(11ビット):すべてのビットが1である同期パターンで、オーディオフレームヘッダを検索するための目印になります。

MPEGバージョン(2ビット):MPEG Version 1、MPEG Version 2、またはMPEG Version 2.5を示します。

レイヤー情報(2ビット):MP3の場合はLayer IIIを示します。

CRCフラグ(1ビット):誤り検出用のCRC(巡回冗長検査)データが付属しているかどうかを示します。

ビットレート(4ビット):エンコードに用いられたビットレート情報を示します。

サンプリングレート(2ビット):通常は44.1kHz、48kHz、32kHzなどの値が指定されています。

パディングフラグ(1ビット):フレームサイズを調整するためのパディングバイトが含まれているかどうかを示します。

チャンネルモード(2ビット):ステレオ、ジョイントステレオ、ダュアルチャンネル、またはモノラルを示します。

その他の情報:著作権情報、オリジナルメディア情報、音声高域補正方式などが含まれています。

サイド情報[編集 | ソースを編集]

フレームヘッダに続いて、「サイド情報」と呼ばれるデータが配置されます。モノラルの場合は17バイト、ステレオの場合は32バイトとなります。

サイド情報には、圧縮データを復元する際に必要な以下の情報が含まれます。

main_data_begin:オーディオデータ(メインデータ)が前のフレームのどこからか、または現在のフレームのどこから始まるかを示す情報。

part2_3_length:ハフマン符号化されたデータの長さ。

big_values:量子化されたスペクトラム値の数。

global_gain:各周波数成分に対する全体的なゲイン(利得)。

スケールファクタ選択情報:周波数帯域ごとのスケーリング方法。

ブロックタイプ:通常ブロックまたは短ブロックのいずれかを示します。

その他の量子化に関連する情報。

ID3タグ[編集 | ソースを編集]

MP3ファイルの先頭または末尾には、曲名、アーティスト名、アルバム名、発売年、ジャンルなどのメタデータを格納するためのID3タグが配置される場合があります。

ID3v1は、ファイルの末尾に配置される128バイト固定サイズの形式で、曲名、アーティスト、アルバム、発売年、コメント、ジャンル情報を格納できます。

ID3v2は、ファイルの先頭に配置される可変長の形式で、より詳細な情報とより多くのデータ量に対応しています。ID3v2のヘッダーは10バイトで、その後フレームと呼ばれる個々の項目が必要なだけ連結されます。各フレームはフレームIDで識別され、可変長サイズのデータを記録できます。

デコード処理[編集 | ソースを編集]

MP3ファイルを再生する際には、逆向きの処理が行われます。

まず、フレームヘッダとサイド情報から必要なパラメータを抽出します。次に、ハフマン復号化によってビット列を元の値に戻します。その後、量子化された値を逆量子化して、元の周波数成分に復元します。逆MDCT処理により、周波数領域のデータを時間領域のサンプル値に変換します。最後に、合成フィルタバンク(ポリフェーズフィルタバンク)によって32個のサブバンドから元の音声信号を再構成します。MP3プレーヤーは、このように圧縮されたデータを効率的にデコードするよう設計されており、エンコード時よりもデコード処理の方が計算量が少なくて済みます。