MPEG Audio Layer3 のエンコーダの高速 化処理

東海大学大学院 2002 年度 修士論文
MPEG Audio Layer3 のエンコーダの高速
化処理に関する研究
指導 清水 尚彦 助教授
東海大学大学院 工学研究科
電気工学専攻
李 芝剛
1
はじめに
近年、LSI 製造技術、設計技術、ならびに情報圧縮伸長技術の進展により、デジタル
音声及び動画像が普及してきている。MPEG(Moving Picture Expert Group)[1] 規格は、
ISO(International Standards Organization)[2] で策定され、ビデオ CD 、デジタルビデオに
採用されている動画像の圧縮伸長規格であり、その中の音声に関する規格 MP3(MPEG-1
Audio Layer3)[3] とともに、現在最も一般に普及している規格である。
しかし 、MP3 という規格は、デコーダの仕様のみが定められているという、変わった
特徴を持っている。これは、エンコードには如何なる手段を用いても構わないことを示し
ている。ただし 、デコーダでデコードできる必要はある。これにより、特に大変な処理で
あるエンコード 処理が、規格に縛られること無くさまざまな方法で改良などを行っていく
ことができるようになっている。
MP3 の圧縮技術は、多くの複雑な計算を伴うため、負荷の大きい処理となってしまう。
MP3 エンコーダの処理自体に手を加え、計算処理を削減することが必要である。実際にプ
ロファイルで見てみるならば 、非線形量子化処理が特に計算量が多いことがわかる。我々
は、ISO のエンコーダソースコード [2] と同じである 8hz-mp[4] を用いて非線形量子化の
計算量の削減を行った。
本論文では MP3 エンコーダの各ルーチンの処理時間をソフトウェアで測定した。ISO
の仕様書 [3] の方法と ISO のエンコーダソースコード [2] と同じである 8hz-mp3[4] の方法
で量子化ルーチンは全体の処理時間の 45%と 30%を占めている。このルーチンを高速に
することによって、全体の処理時間を短くすることができる。
2
MP3 の概要
2.1
MP3 とは ?
MP3 が MPEG Audio Layer(レイヤ)3 の略称であり、音声圧縮規格の一つである。MPEG
は、ディジタル化した動画や音声を払うための国際標準規格で、同名の国際標準化機関で
ある MPEG(Moving Picture Experts Group) が策定した。この規格は、最初は、ビデオ
CD を実現するためにつくられた圧縮規格だったが 、現在ではさまざ まな拡張が行われ 、
非常に多く分野で利用されている。
2
レ イヤ
ステレオ
モノラル
レ イヤ 1
256kbps
128kbps
レ イヤ 2
192kbps
96kbps
レ イヤ 3
128kbps
64kbps
表 1: MPEG-1 Audio の標準ビットレートに表示する
2.2
MPEG-1 Audio
MPEG-1 という規格自体は、もともとビデオ CD を実現するために生み出された圧縮
規格である。そのため、MPEG-1 Audio では、非常に高音質なデータも圧縮の対象とし
ている。
MPEG-1 の規格自体は 1993 年に策定され、ビデオ CD を中心に広く利用されてきたが、
1998 年頃から事情が少し変わってきている。現在では、MP3 の用途を質問すると、ビデ
オ CD 用という回答は返って来ないかもしれない。
MP3 が急速に広まった理由の一つは、MPEG-1 Audio Layer3 が 、44100Hz(16 ビット
ストレオ) で、サンプングされたデータに対応している点ある。つまりは、音楽 CD と同
等の音質に対応しているからである。
MPEG-1 Audio Layer3 では、音楽 CD と同品質のデータを、品質をほとんど 変わらな
いで、約 10 分の 1 以下のサイズまで圧縮することが可能である。音楽 CD 品質のデータ
を PCM 形式で保存すると、1 分間につき約 10M バイトの容量を必要とするが、MPEG-1
Audio Layer3 で圧縮すれば 、約 1M バイトの容量で済む。 言い換えれば 、通常の 10 倍以
上の楽曲を記憶媒体に保存できるということである。
2.2.1
サンプリング周波数とビットレート
MPEG-1 Audio は、44100Hz だげでなく、48000Hz 、32000Hz の音声データにも対応し
ており、ステレオだけでなくモノラルの音声データを圧縮することも可能である。圧縮後
のビットレート (転送レート ) を選択することも可能である。つまり、音質を落して圧縮
率を高めることや、逆に音質優先にすることができる。
選択できるビットレートは、レ イヤによって異なり、レ イヤ 1 は 32-448kbps 、レ イヤ 2
は 32-384kbps 、レ イヤ 3 は 32-320kbps となっている。ちなみに、標準となるビットレー
トは表 1 のとおりである。
3
2.2.2
符号化の概要
MP3 は、人間の聴覚特性を利用して、知覚しづらい音を取り除くことにより、圧縮率
を高めている。
例えば 、人間の聴覚特性の一つに、大きな音の周辺にある小さな音は聞こえづらいとい
う特性がある。いわゆる、マスキング効果と呼ばれるものである。これを利用して算出し
た許容量子化雑音に合わせて量子化を行えば 、音質をほとんど 劣化させずに、冗長データ
を取り除くことができる。
ほかには、周波数帯域を 32 バンド のサブバントフィルタバンクで分割して量子化対象
のダ イナミックレンジをそろえる処理を行うことにより、量子化効率を上げるといった工
夫もされている。
符号化アルゴ リズムはレ イヤにより異なるが 、レ イヤ 1 とレ イヤ 2 の方式は大差なく、
レ イヤ 3 の符号化アルゴ リズムは、レ イヤ 1 、レ イヤ 2 と大きく異なっている。レ イヤ 3
では、サブバントフィルタバンクに MDCT などの処理を加えたハイブリッド フィルタを
利用する。
MDCT(Modifed Discrete Cosine Transform)[5] 、変形離散コサイン変換は、音声圧縮技
術で広く利用されている変換符号化の方式である。DFT(離散フーリエ変換) や DCT(離
散コサイン変換) では、変換ブロック (フレーム) の境界ごとに量子化誤差が発生してしま
うが 、MDCT では前後の隣接フレームと半分ずつ分析フレームを重ねあわせることによ
り、この歪みを防いでいる。
レ イヤ 3 では、品質を向上させるため、MDCT に 2 種類のブロック長が用意されてい
る。通常、変換符号化を行う場合は、おおきなブロック長を用いたほうか品質が向上する
が、信号振幅が急激に立ち上げる部分では、プリエコーと呼ばれる歪みが発生する。入力
信号の性質に応じてブロック長を切替えれば 、これを抑圧することができる。
これらに加えて、レ イヤ 3 では、ハフマン符号化やビットリザーバと呼ばれる手法も用
いて、圧縮効率を高めている。
3
MP3 の符号化技術の基礎
本章では、MP3 でなぜ音声データを圧縮できるのかという原理、及び MP3 における音
声の符号化/復号のな処理方法について、詳しく説明する。
4
3.1
3.1.1
音声圧縮技術の原理
圧縮の原理
オーディオ信号圧縮方式は、音響信号の特性を使って音質的に冗長な部分を圧縮する方式
である。まず、空間を伝わる音の波形を対象として圧縮方式に、差分予測符合化 (ADPCM)
がある。
ADPCM 方式は 、オーデ ィオ信号波形を過去のサンプルから予測し 、予測した値と本
当のサンプル値との差分値を転送する圧縮方式である。予測がうまくいけば差分値は小さ
くなり、それを表すビット数もすくなく済むため圧縮率は上がる。いろいろなオーディオ
信号を払う場合には、信号の性質に応じて予測係数の適応的な更新が行われる。
払うオーディオ信号を限定すれば 、予測精度が上がることが期待できる。たとえば 、音
の上流側へ向かい、音の発生源、とくに音声に限定し 、音声発生機構をモデルして予測す
る直線予測符合化 (LPC 、CELP) は、非常に高い圧縮率を実現している。
一方、 MPEG Audio などで開発された圧縮方法は、それとは逆に、音の下流側に着目
し 、人間の耳における聞こえ方に注目した圧縮方法である。音響心理学で、音と人間の聴
学構造がいろいろと研究されおり、そのなかでとくに音のマスキング現象が、情報圧縮の
手段として注目された。
ある大きな音が存在している場合、その音に周波数的に近い音、時間的に近い音は、マ
スキング効果により聴覚で知覚されないという。この効果を使い、マスキングされる音の
情報量を捨て去ることで圧縮を行う。
一般に、神経は刺激を受けると、その刺激を際立たせ、より精密に認識するため、刺激
をうけた神経の近傍の神経の感度を抑圧するように働く。この抑圧か聴覚の場合、マスキ
ング効果として働くことになる。
3.1.2
周波数マスキング
耳から入ってきた信号は 、鼓膜で振動として受け取られる。この振動は小さな三つの
骨、耳小骨を経由してカタツムリ状の器官、カタツムリに達する。カタツムリには多数の
聴神経が並んでおり、音の周波数により刺激を受ける神経が異なる。いわば 、聴覚は周波
数分析をしているのである。ある周波数に対する聴神経が刺激を受けた場合、その周りの
聴神経を逆に抑圧する。これにより、周波数弁別能力を高めている。
一方で、この抑圧の度合いが周波数マスキング特性として現われる。図 1 は中心周波数
5
250Hz 、1kHz 、4kHz の 3 種の狭帯域のノイズによる最小可聴レベルを示している。すな
わち、この最小可聴レベル以下の音は聞こえないことを示している。それゆえ、この領域
の信号削除でき、情報圧縮することができる。
250Hz
1kHz
4kHz
60dB
40dB
20dB
0dB
50
200
500
1k
10k
図 1: 臨界帯域幅ノイズよる最小可聴レベル図
ところで、このマスキング特性は臨界帯域幅と呼ばれるバンド 幅の狭帯域ノイズで求め
られている。この臨界帯域幅内では、ノイズのバンド 幅にかかわらずノイズのエネルギが
同じであれば 、同じマスキング効果として働くことが知られている。
あたかもそのエネルギをもつ一つの信号として払うことができ、この信号をマスカー
と呼ぶ。臨界帯域を超える幅の帯域の場合は、ノイズはもはや一体としては働かず、マス
カーが複数存在するものとして払うがあ適当であることがわかっている。
臨界帯域幅は、図 2 に示すように周波数によって変わり、中心周波数が 500Hz 以下では
100Hz 、中心周波数 500Hz 以上ではおおよそ周波数に比例して広くなっている。
周波数マスキング特性は、図 1 のようにマスカーの周波数によって異なり、また、マス
カーの種類によっても変わって来る。図 1 は、狭帯域ノイズのマスキング特性である。マ
スカーが純音の場合も詳しく測定されている。
また、図 1 には静寂時のマスキング特性が示されている。これはマスカーがなくても、
聴覚が知覚できない絶対可聴レベルを示しており、マスカーによるマスキング効果と同様
に、圧縮することときに考慮される。
6
実際の圧縮は 、次のように行われる。時間サンプル列は周波数サンプル列に変換され
る。周波数サンプル列は 、できるだけ臨界帯域に合わせたバンド 幅になるようグループ
化される。グループごとに周波数コンポーネントのエネルギ総合をとり、信号レベル (S)
を求める。この信号レベルがそれぞれマスカーとなり、それぞれのマスキング効果が計算
される。ここでは 、マスカーが純音的であるが 、ノイズ的あるかを考慮しなければなら
ない。
次に、各バンドごとに各マスカーがそのバンドに及ぼすマスキング効果を総合し 、その
バンド のマスクレベル (M) が決定される。図 3 に、そのようにを示す。また、このとき静
寂時のマスキング特性も考慮される。
その次に、各バンドごとの信号対マスキング比 (SMR) を求める。この SMR からバン
ドごとのビット割り当てを行い。各コンポーネントをこのビット数で量子化する。このと
き量子化ビット数に応じた量子化ノイズが発生する。信号レベルとこの量子化ノイズとの
比は SNR である。
この量子化ノイズレベルがマスキングレベルより小さければ 、すなわち SMR < SNR
であれば 、マスキング効果により量子化ノイズは聴覚に知覚されない。ビット数が小さい
ほど 圧縮効率は上がるが、一方では量子化によるノイズは大きくなる。そのため、ビット
5k
2k
1k
500
100
50
100
500
1k
2k
図 2: 臨界帯域幅の変化図
7
5k
10k
割り当ては、量子化のノイズがマスキングレベルを超えない範囲で最小のビット数となる
ように設定するのが望ましい。図 4 に、そのようにを示す。
マスキング特性を求めるにあたって、臨界帯域にあった帯域で計算することが重要であ
る。ところで、MPEG Audio Layer1 、2 は 32 のサブバンドに分割しているが 、これはサ
ンプリング周波数 48kHz の場合、1 サブバンドは 750Hz であり、低域の臨界帯域幅 100Hz
に比べてかなり幅が広い。
一方、MP3(MPEG Audio Layer3) で用いられる MDCT(変形離散コサイン変換) は 576
周波数コンポーネントに分割され 、1 周波数コンポーネントは帯域幅約 42Hz となる。実
際には、低域は 4 コンポーネントをまとめて 1 バンド としているので約 173Hz となるが 、
それでも臨界帯域に近い幅となっている。
3.1.3
時間マスキング
ある大きな音の時間的前後にも、マスキング効果が現われる。図 5 ように、マスカーと
なる音の前から働く「後向性マスキング 」、マスカー音の止まった後に働く「前向性マス
キング 」、およびマスキング音のある時に働く「同時マスキング 」がある。前向性マスキ
f(
図 3: 復号マスキング効果図
8
ング効果は 100ms 以上と比較的長いが、後向性マスキング効果の時間は 20ms 程度とごく
短い。この現象は、聴覚の処理遅延と解釈されている。
ところで、オーディオ圧縮はある時間サンプルをブロック化してブロック単位で周波数
サンプルに変換する。周波数サンプルに対して圧縮を行うため、この圧縮で発生した圧縮
歪みは時間サンプルに戻したとき、そのブロック内に拡散する。
図 6 のように過渡的な信号の場合、その圧縮歪みはブロック内に広がり、その結果、過
渡信号の時間的前にも圧縮歪みが現われる。ところが、マスカーの前に働く後向性マスキ
ング効果は時間的に短い期間しか働かないため、この圧縮歪みが認識されてしまうことが
ある。これは「プリエコー」と呼ばれ、オーディオ圧縮の場合の音質の要因の一つとなっ
ている。
これを避けるには、変換ブロック長を短くすればよい。しかし 、定常的な音の場合はむ
しろ長いブロック長のほうが圧縮効率が高い。
(S)
SMR
SNR
(s)
図 4: SMR と SNR 図
9
-50
0
50
100
!"$#
図 5: 時間マスキング効果図
"!$#"%&
(")'*$!$#
%&+
$ !$#
%'&
,-*"!$#"%&.+
図 6: プリエコー図
10
150
3.2
時間と周波数変換
周波数マスキング効果を適用するために、時間ー周波数変換を行う。時間ー周波数変換
には次に述べるようにサブバンド フィルタ方式、直交変換方式、ハイブリッド フィルタ方
式がある。
3.2.1
サブバンド 分析フィルタ
この方式は周波数帯域を複数に分割し 、その帯域ごとの信号に音響マスキングを適用し
て圧縮するものである。MPEG Audio Layer1 、2 では均等帯域分割の 32 サブバンド を用
いている。
図 7 はサブバンド フィルタバンクの構成例である。時間信号はサブバンド 分析フィルタ
で 32 個のサブバンドに分割される。各バンド 出力は、32 サンプルのうち 1 サンプルのみ
を取り出す間引きが行われる。この出力は圧縮されデコーダに送られる。デコーダでは間
引きされたサンプル列に値”0”のサンプルを補助し 、サブバンド 合成フィルタに入れると
元の時間サンプルが再合成される。もし 、途中で圧縮が行なわなければ 、再合成された時
間サンプル列と同一となる完全再合成性が保証されている。
!
.
.
"#
!
$
(
( %
&'
.
.
図 7: サブバンド フィルタ図
16 ビット直線量子化された入力信号は、サブバンド 分析フィルタバンクで 32 帯域サブ
11
バンド 信号に分割される。フィルタは 512 タップ PFH で実現される。
512 の入力信号サンプル X0 ...X511 に対して,512 の分析窓の係数 Ci ベクトル Zi は
Zi = Ci ∗ Xi
部分和 Yi を
Yi =
7
X
(1)
Z(i+64j) (i = 0, ..., 63j = 0, ..., 7)
(2)
Yk ∗ M (i, k)(i = 0, ..., 31k = 0, ..., 63)
(3)
j=0
32 個の分割帯域標本値 Si を
Si =
63
X
k=0
行列係数 M(i,k) は
M (i, k) = cos
(2i + 1) ∗ (k − 16) ∗ π
(i = 0, ..., 31k = 0, ..., 63)
64
(4)
図 8 は、そのサブバンド フィルタの周波数特性の例を示している。各バンド の出力信号
がサンプル間引きされ 、サンプリング周波数は 1/32 となり、その結果、隣接バンド と重
なっている部分がエリアシング歪みとなり、折返って来る。この歪みは、サブバンド 合成
フィルタによる合成時には隣接バンドとの間でお互いにチャンセルされ、完全再合成性が
保証される。
また、サブバンド フィルタは間引きにより、入力信号のサンプルレートとサブバンド の
サンプルレートは ¿等しい。この二つの特性により、時間サンプル列と周波数サンプル列
とは情報の欠落も冗長もなく交換可能な変換となっている。
3.2.2
MDCT
MDCT は直交変換の一種で、効率の良い演算法 (FFT 、高速フーリエ変換) が使用でき
る。また、 サブバンド フィルタより周波数分解能を高めることができる。
また、直交変換による時間サンプル周波数サンプルとの間にはサンプルレートの変換な
く、逆変換により再合成できることはサブバンド フィルタと同じである。
MDCT は Modified Discrete Cosine Transform の略であり、ビデオ信号の圧縮によく利
用される DCT の一種である。 数式上は、次のように表される。
n−1
X
Zk ∗ cos(π ∗ (i + 12 ) ∗ (k + 12 ))
)(i = 0....n − 1)
DCT : Xi =
(
n
k=0
12
(5)
0
1
2
3
...
30
31
図 8: サブバンド フィルタ特性図
M DCT : Xi =
2n−1
X
(
k=0
Zk ∗ cos(π ∗ (2i + 1) ∗ (k + 12 + n4 ))
)(i = 0....n − 1)
n
(6)
ここで、Zk は時間サンプル、Xi は周波数サンプルです。MDCT は、DCT に比べて入
力サンプル Zk の個数が n と 2n で 2 倍だが、出力サンプル Xi の個数は n 個で同じである。
このことは、MDCT 変換が完全な変換でなく、半分の情報しかもっていないことを意味
する。
しかし 、MDCT 変換時は隣接の変換ブロックと 50%ずつオーバラップして変換され 、
デコーダ時は変換した出力がオ ーバラップ加算される。このとき欠落した情報をお互い
が補い合い、もとの時間サンプルが再合成される。すなわち、MDCT 単独では不完全だ
が 、隣接する MDCT とオーバラップすることにより完全変換となっている。
長い窓の場合 (n=36)
MDCT して得られる 18(サンプル ) × 32=576 サンプルを 1 グラニュールとし 、量子化
等処理はグランニュール毎に行う。2 グラニュールを 1 フレームとして取り払う。
短い窓の場合 (n=12)
36 サンプルを変換する長い窓と 12 サンプル毎に 3 回変換する短い窓が選択できる。
MDCT して得られる 6(サンプル ) × 32=192 サンプルになる。
MDCT の処理は図 9 に示す。
13
18
18
k35
k17
k0
s0
=576
s31
18
k35
k29
18
k23
k17
k11
k5
k0
s0
=576
s31
12
12
12
図 9: MDCT の処理
直交変換では、時間サンプルのブロック単位で周波数サンプルに変換され、その周波数
サンプルが圧縮されると圧縮歪みが発生する。
この非連続なブロック歪みは非常に耳につきやすい。このためオーバラップし窓関数を
掛けて滑らかにブロック間をつなぐことよりブロック歪みを軽減する。しかし 、単純にオー
バラップを導入すると、オーバラップ分だけサンプルレートが上がってしまう。MDCT
は、50%ずつオーバラップして窓によるブロック間歪みの軽減を図るとともに、サンプル
レートの上昇も抑えるという、オーデ ィオ信号に最適な変換法といえる。
また、窓関数は一種のフィルタと考えることもでき、各コンポーネントはサブバンド
フィルタと同様に周波数特性をもっている。窓関数によりこの周波数特性が決定される。
3.2.3
ハイブリッド フィルタ方式
MPEG Audio は階層化されており、レイヤ 1 、2 がサブバンド、レ イヤ 3 である MP3 は
ブバンド と MDCT を組み合わせたハイブ リッド フィルタ方式である。もともと MP3 は
MDCT 方式として MPEG へ提案され、サブバンド 方式と競った。そして、最終的には両
者を残す手段として階層化が検討された。
階層化にあたって、れいや 1 、2 のサブバンド 信号を共通項とし 、レ イヤ 3 はそのサブ
14
バンド 信号をさらに MDCT により周波数的に細分化する方法が編み出された。。図 10 に
それ示す。
MDCT
IMDCT
図 10: ハイブリッド フィルタ方式
各サブバンド 信号は、ウィンド ウ幅 36 の MDCT により 18 の周波数コンポーネントに
変換される。その処理図を図 11 に示す。サブバンド の数は 32 なのて、総コンパーネント
数 576 となる。MDCT の出力は、エリアシング除去バタフライを通して最終的な周波数
コンポーネントを得る。
Subband Filer
bank
MDCTSample
Aliasing
Butterfly
図 11: ハイブリッド フィルタの処理図
エリアシング除去バタフライの必要性は、次のように理由による。サブバンド の各バン
15
ド 出力は 、隣接バンド 信号がエリアシングとして含まれている。そのため、サブバンド
出力 MDCT すると、MDCT 出力にはエリアシング歪みが含まれている。このエリアシン
グを打ち消すため、図 12 のようなバタフライ演算を行う。これにより、時間信号を直接
MDCT した場合と等価な出力を得ることができる。
CSi
CAi
(i)
CAi
CSi
図 12: 符号器バタフライの構成
バタフライ係数 Csi 及び Cai は、次による。
Csi = √
1
1 + Di2
(7)
Di
1 + Di2
(8)
Cai = √
折り返し歪み削減係数を表 2 に示す。
折返しひずみ削減処理により低周波数から高周波数の順に配列されている。計算式は
X[18 ∗ sb − 1 − i] = Xr [18 ∗ sb − 1 − i] ∗ Cs[i] − Xr [18 ∗ sb + i] ∗ Ca[i]
(9)
X[18 ∗ sb + i] = Xr [18 ∗ sb + i] ∗ Cs[i] + Xr [18 ∗ sb − 1 − i] ∗ Ca[i]
(10)
(sb=1,..,31 i=0,..,7)
デコーダはその逆演算をする。まず、エンコーダ側と同じようなエリアシング除去バタ
フライ演算により、MDCT 出力と同じエリアシング歪みを有した信号に戻し 、IMDCT 、
サブバンド 合成フィルタにより元の時間信号が得られる。
このように MDCT と等価なコンポーネントを得るために、MP3 はサブバンド、MDCT 、
バダフライと複雑な演算が必要となり、処理演算量も増大する。また、ここで用いられる
MDCT 基数は 18 で通常 2 の n 乗ではないことからも高速フーリエ演算を使うが難しく、
処理が増大する要因にもなっている。
16
i
Di
0
-0.6
1
-0.535
2
-0.33
3
-0.185
4
-0.095
5
-0.041
6
-0.0142
7
-0.037
表 2: 折り返し歪み削減係数
3.3
3.3.1
MP3 符号化及び復号
符号化と復号の概要
MP3 という、規格によって構成されるシステムの簡単なブロック図を、図 13 に示す。
システムとしては、エンコーダとデコーダで構成される。図 13 では、エンコーダの内
部について描いてあるが、仕様としては定められていないので、必ずしもこのように構成
されるとは限らない。もしかすると、等価ではあるものの手法が異なっていたり、等価で
すらないかも知れない。ですが 、ここに載せた方法は ISO の仕様書に参考として載せら
れた、エンコーダと同じ構成をしているので、極基本的なものとなる。よって、ここでは
このエンコーダを用いるものとして、動作の概要を説明して行く。
時間サンプルは、まず、音響心理モデルブロック入力される。このブロックでは、より
精密に音響心理モデルの計算をするために、時間周波数変換ブロックとはサイズや窓関数
などが異なる時間ー周波数変換が用いられる。このブロックでは、音響心理モデルを用い
てマスキング効果を計算し 、SMR を求める。
時間マスキングに対しては、信号の過度的変化が大きいか、定常的な音であるかの判別
がなされ 、MDCT ブロック長がロング かショートかの判定する。また、周波数マスキン
グ効果を計算し 、SMR が求められる。
入力信号はまた時間ー周波数変換ブロックに入力され、図 5 で示したハイブリッド フィ
ルタバンクにより周波数サンプルに変換される。音響心理モデルブロックで判別したロン
グブロック (long black) ショートブロック (short black) 切り替えが行われる。
17
PCM
Iteration Loop
Anti Aliasing
MDCT
!"#$%
- . / ( &'( *) +*,
01
23
5
& 4 5 (6
23
MP3 Bit Stream
PCM
Iteration Loop
Anti Aliasing
IMDCT
!*"7#$%
/ - (
&'( *) 8,
01
8,
5
& 4 5 (6
9
図 13: MP3 の符号化/復号図
量子化ブロックでは、周波数サンプルは臨界帯域をもとに周波数バンドグループに分け
られる。音響心理モデルブロックで得られた SMR を基に、量子化に必要なビット数で周
波数サンプルが量子化され、圧縮される。また、量子化で失われるレベル情報を保するた
めのスケールファクタが付け加えられる。
この量子化された周波数コンポーネントは、次のビットストリーム形成のブロックで可
変長符号であるハフマン符号化によってさらに圧縮され 、サイド 情報とともに MP3 スト
リームにフォーマットされる。
デコーダでは、まったく逆の動作、つまり MP3 ストリームを解釈してサイド 情報と周
波数コンポーネントを取り出し 、ハフマン符号の復号をして、スケーリングによりレベル
の復号をし 、周波数コンポーネントの復号をする。時間ー周波数逆変換ブロックを通して
時間サンプル列を得る。
18
3.3.2
ブロック切り替え
MP3 のフレームは、1152 サンプルで構成される。576 サンプルを 1 グラニュルを呼び 、
1 フレーム 2 グラニュルで構成される。ハイブリッドフィルタは、ロングブロックとショー
トブロックとの切替えが行われるが 、ロングブロックは 576 サンプルサイズで 1 グラニュ
ル , ショートブロックは 192 サンプルサイズを 1 サブブロックとし 、3 サブブロックで 1 グ
ラニュルとなる。
ロングブロックとショートブロックとのつなぎ部分は再合成性を確認するために、図 14
に示すように、スタート窓、ストップ窓と呼ばれる特殊な窓が使われる。なお、エリアシ
ング歪みをチャンセルするためのバタフライ演算はショートブロックには適応されない。
black_type=0
black_type=1
black_type=3
black_type=2
図 14: 窓切替え状態図
MP3 では、ミックスドブロックという特殊なブロックが定義されている。これは、低
域の周波数帯域はロングブロック、高域はショートブロックにするというもので、サブバ
ンド × MDCT 構成ゆえのテクニックである。
もともとショートブロックは過度音の場合に選択されるブロックであり、そのような音
は高域成分のほうがエネルギが大きいので、高域のみショートブロックとすることは意味
がある。
19
一方、低域音はもともとと定常音的であり、ショートブロックにする必要はあまりな
い。ミックスドブロックを使うことで、過度音と定常音がミックスされたような複合音に
対し 、音質改善効果が期待できる。
3.3.3
スケールファクタ
周波数コンポーネントは、臨界帯域に合わせた帯域ごとに分割される。これは、
「スケー
ルファクタバンド 」と呼ばれる。サンプリング周波数 44.1kHz の場合の例を表 3 、4 に示
す。ロングブロック 21 バンド、ショートブロックで 12 バンドに分割される。
音響心理モデルから与えられる信号対マスク比 (SMR) を基に、各スケールファクタバ
ンドごとに量子化される。ここては、量子化ノイズが SMR で与えられるマスクレベルよ
り下回るよう、できるだけ最小のビット数で量子化が行われる (図 4)。
この量子化によりレベル情報が失われるため、レベル情報はスケールファクタとして別
に伝送される。復号時、量子化された周波数コンポーネントにスケールファクタを掛ける
ことで、元の周波数コンポーネントが再現される。このスケールファクタは量子化ノイズ
をマスクレベルに合わせる働きをしている。
スケールファクタは、スケールファクタバンドごとに値をもつので数が多く、できるだけ
必要ビット数を抑える必要がある。スケールファクタはグラニュル全体にかかる global gain
と、それからの偏差として各バンドごとのレベル情報 scalefac とに分けれる。
また、ショートブロックではサブブロックごとの subblock gain が加わる。そして、global gain
は 2 の 1/4 ステップで定義され 、scalefac は 2 の 1 乗あるいは、2 の 1/2 乗で定義される。
また、subblock gain は 2 の 2 乗ステップで定義される。実際のスケールファクタは、次
の式で表れる。
ロングブロックの場合:
4
Xri = sgn(Xi ) × |Xi |( 3 ) × 2(0.25)×(A−210) × 2−(B)×(S)
(11)
ショートブロックの場合:
4
Xri = sgn(Xi ) × |Xi |( 3 ) × 2(0.25)×(A−210−8×(P )) × 2−(B)×(Q)
A = global gain[gr]
B = scalefac multipliter
S = scalefac[sfb]
20
(12)
同倍率群
幅
開始位置
終了位置
0
4
0
3
1
4
4
7
2
4
8
11
3
4
12
15
4
4
16
19
5
4
20
23
6
6
24
29
7
6
30
35
8
8
36
43
9
8
44
51
10
10
52
61
11
12
62
73
12
16
72
89
13
20
90
109
14
24
110
133
15
28
134
161
16
34
162
195
17
42
196
237
18
50
238
287
19
54
288
341
20
76
342
417
表 3: サンプリング周波数 44.1kHz/ロングブロックの場合
21
同倍率群
幅
開始位置
終了位置
0
4
0
3
1
4
4
7
2
4
8
11
3
4
12
15
4
6
16
21
5
8
22
29
6
10
30
39
7
12
40
51
8
14
52
65
9
18
66
83
10
22
84
105
11
30
106
135
表 4: サンプリング周波数 44.1kHz/ショートブロックの場合
P = subblock gain[gr][wnb]
Q = scalefac[gr][wnb][sfb]
Xr: 再生されたコンポーネント
X :量子化コンポーネント
sgn(X) :X の符合
scalefac multiplier = 1 、0 、5
gr :glanule
wnb:window
sfb:scalefactorband
さらにビット数を削減する工夫がされている。その一つに、スケールファクタバンドを
低域側と高域側とに分割し 、それぞれ 、scalefac の伝送するビット長 0 ビットから 4 ビッ
トの間で指定する工夫がある。0 ビットの割当ては実際には伝送されず、scalefac = 0 と
解釈される。
もう一つ、グラニュル間スケールファクタを共有する工夫もある。これは 、スケール
ファクタバンド を低域から高域に 4 グループに分け、それぞれグラニュル 1¿のスケール
ファクタがグラニュル 0 のスケールファクタを再利用するが、新しく伝送するか指定する。
22
3.3.4
量子化
周波数領域のデータを量子化し 、二重の入れ子になってループで符号化する。はじめ
に、レ イヤ 3 ループモジュールは、三つの階層で構成する。最上の階層を ” ループフレー
ムプログラム”と呼ぶ。これは、”外部ループ ”というサブルーチンを呼び出し 、このサブ
ルーチンは更に ”内部ループ ”というサブルーチンを呼び出す。各階層の対応する流れ図を
図 15 に示す。
AB>CEDF>GHJI
+,-./
START
yes
START
KL GJHJI
no
M%L GJHJI
0 ,-./
no
START
"#$
"#$124356
!
yes
"#$ 7 98
:4;<>=9?@
no
N UWOVYX
QPZJ
RS [
T>P
yes
END
% &'
()*
END
no
"#$ 7 98
:4;<>=9?@
yes
END
図 15: MP3 の量子化ループ
外部ループは、内部ループの周波数成分を量子化するときに生成した量子化雑音を制御
する。雑音の有色化は、量子化の前に実際の倍率を同倍率群の範囲内で周波数成分に乗じ
ることによって行う。実際のシステムでは、各歪み制御ループで使用する倍率の増加とと
もに、このような乗算を昇順に行う。
内部ループは 、周波数領域データの量子化を行い、同時にフレーム形成に備える。ハ
フマン符号化表の選択、big values の領域への細分化及び量子化ステップの選択は、この
ループで行う。
23
3.3.5
ハフマン符号化
各コンポーネントは 0.75 乗の非線形量子化が行われる。復号時は、量子化された周波数
コンポーネント 4/3 乗して元に戻す。これにより、信号が ”0”の近傍の量子化ステップは
小さく、信号の絶対値が大きくなるにしたがい量子化ステップが広がることになり、ビッ
ト圧縮の効果が得られる。
非線形量子化された周波数コンポーネントは、次にハフマン符号化される。ハフマン符
号化はエントロピー符号化とも呼ばれ、完全にビット再現性を有するデータ圧縮符号の一
種である。一般に音声信号などは、量子化した場合は、各量子化値の現れる頻度は一様で
なく、ある偏りを持っている。一般に量子化値 0 のまわりの出現頻度が高く、絶対値の大
きな量子化値の出現頻度は低い。典型的な頻度分布はガウス分布であるといわれている。
出現頻度の高い量子化値には短い符合を、出現頻度の低い量子化値は長い符合を割り当
てる。この符合の割り当ててはハフマン符号表として定義してあり、デコーダもハフマン
符号表をもっており、どのハフマン符号表を使ったがビットストリームのシンタックスで
記述される。
ハフマン符号化にあたっては 、周波数コンポーネントは大きく 3 つの領域に分割され
る。図 16 のように、低域側から bigvalues part 、count1 part 、 zero part と名付けられ
る。各領域境界は bigvalues と count1 という 2 つのシンタックスで指定される。この領域
分割は、オーディオ信号は高域の音ほど 音のレベルは小さくなり、ついにコーディングす
る必要がなくなることを期待していることを示す。
zero part は、すべてのコンポーネントが 0 でコンポーネントは伝送されない。conut1 part
はコンポーネントは 1 、0 、-1 の 3 値しかもたない。この領域の符号化は、4 コンポーネン
トをセットとして符号が割り当てられる。2 種類の ハフマン符号表が用意されており、そ
の一つが指定される。
bigvalues part はコンポーネントが大きな値を持つ領域であり、2 のコンポーネントを
セットとして符号が割り当てられる。16 種類の符号表が用意されており、この領域に対
し 、そのうちの一つの符号表が指定される。符号表は適用するのコンポーネントのうち
の最大値で用いる符号表が異なり、また同じ最大値に対しても信号の種類に応じて複数の
符号表が用意されている。また、拡張符合のビット長も合わせて指定できるようになって
いる。
ハフマン符号表の例を表 5 に示す。これはハフマン符号表 5 として定義されているもの
で、二つのコンポーネント x 、y の量子化値 0 、1 、2 、3 に対するハフマン符号が定義され
24
ている。たとえば 、x=0 、y=0 の場合、符合 1 が割り当てられ 、x=0 、y=3 の場合、最長
7 ビットの 0000101 が割り当てられることを示している。
ハフマン符号表は絶対値で定義されており、正負の符号は量子化ビットが 0 でない場合
は、ハフマン符号の後に符合ビットが付け加えられる。ハフマン符号表は x 、y の量子化
が 15 までしか用意されておらず。量子化値を 15 を超える場合、拡張符号が指定される。
この場合、量子化値 15 目印として (量子化-15) をハフマン符号の後に拡張符号として付
加される。この拡張符号の長さは、符号表と同時に拡張符号表長 linbit が指定される。図
17 に、この拡張張符号の例を示す。
ハフマン符号の復号では、1 ビットずつとってきてビット長を伸ばしながらハフマン符
号表を参照して x 、y 復号する。もし 、x が 0 でなければ 、さらに 1 ビット取ってきて、正
負のサイン符号 s を得る。y について同様 u を得る。ハフマン符号表の指定が拡張符号長
linbit=0 でない場合は、拡張ビットがあるかど うかをチェックする。
もし 、x=15 ならば 、x の拡張ビットが付加されており、linbit の長さのビットをとって
きて e とする。もし 、x は 15 じゃない場合は、e=0 とする。また y についても同様に d を
得る。これにより復号量子化値は
X = sign(s) ∗ (x + e)
Y = sign(u) ∗ (y + d)
bigvalues_ count1_part zero_part
part
.
’0’
a...0..-a
1..0..-1
0
575
f
図 16: 量子化コンポーネントの領域分割
25
x
y
符号長
符号
0
0
1
1
0
1
3
010
0
2
6
000110
0
3
7
0000101
1
0
3
011
1
1
3
001
1
2
6
000100
1
3
7
0000100
2
0
6
000111
2
1
6
000101
2
2
7
0000111
2
3
8
00000001
3
0
7
0000110
3
1
6
000001
3
2
7
0000001
3
3
8
00000000
表 5: ハフマン符号表の例
となる。
ハフマン符号表 0 は特殊な符号表で、x=y=0 のみの表で、符号長 0 となる。この符号
表が指定されると、すべての量子化値は 0 であることを意味し 、ストリームへのコンポー
ネントの量子化値は一切記述されない。
3.4
MP3 のビット スト リーム構造
図 18 に、MP3 のビットストリームの構成を示す。ビットストリーム 1152 サンプルの
フレーム構成して、各フレームごとに、ヘッダ、サイド 情報、メインデータ、付加データ
から構成されている。ヘッダはフレーム同期を取るためのフレームシンク、サンプリング
周波数、ビットレート、モード などのシンタックスが含まれる。
26
3.4.1
フレームヘッダ
この部分では主に、ビットレートやサンプリング周波数など 、MP3 データ全体のタイ
プを表すような設定事項が格納されている。
このヘッダ部分を構成する要素と、その構成ビットを表 6 に示す。
この情報から、メインデータのデコード 方法が分かることになる。ただし 、MP3 のビッ
トストリームの変わった点として、このヘッダの指すデータは必ずしも、¿ 同一フレーム
無いにというものがある。基本的にフレームは一定の間隔となるが、できるだけ、圧縮効
率を上げるために、前のすき間にデータを詰め込めるようになっているため、このような
仕様となっている。
3.4.2
CRC
フレームヘッダのエラー保護が有効を示していた場合のみ、ヘッダの直後に 2 バイトの
CRC がはいっている。ハード ウェアの場合は、記録メディアに正しく書き込まれていな
いことや、記録メデ ィアから正しく読み取れていない場合も考えられるため、CRC は必
ずチェックすべきである。このエラーチェックには次のような生成多項式を持つ C RC-16
x
y
s
u
e
e
x 0
x = 15
y 0
e
x= sign(s)*(x+e)
y = sign(u)*(y+d)
図 17: ハフマン符号の例 (拡張符合の場合)
27
d
d
y = 15
d
名称 ビット数
内容
同期ヘッダ
12
すべてのビットが 1
バージョン
1
0:MPEG-2 1:MPEG-1
レ イヤ
2
11:レ イヤ 1 10:レ イヤ 2 01:レ イヤ 3
エラー保護
1
0:有効 1:無効
ビットレート
4
ビットレート対応表 7 参照
サンプリング周波数
2
サンプリング周波数対応表 8 参照
パデ ィング
1
0:全データ使用 1:未使用ビット数がある
エクステンション
1
0:無し 1:プライベート
チャンネルモード
2
0:ステレオ 1:モノラル
モード エクステンション
2
モード エクステンション対応表 9 参照
著作権
1
0: 著作権保護なし 1:著作権保護あり
オリジナル
1
0: コピー 1:オリジナル
エンファシス
2 00: 無し 01:50/15ms 10:Reserved 11: CCITT J.17
表 6: フレームヘッダ
が用いられる。
G (X) = X 16 + X 15 + X 2 + 1
CRC
図 18: MP3 ストリームの基本構造
28
(13)
MPEG-1 レ イヤ 1
MPEG-1 レ イヤ 2
MPEG-1 レ イヤ 3
0 フリーフォマット
フリーフォマット
フリーフォマット
数
1
32
32
32
2
64
48
40
3
96
56
48
4
128
64
56
5
160
80
64
6
192
96
80
7
224
112
96
8
256
128
112
9
288
160
128
10
320
192
160
11
352
224
192
12
384
256
224
13
416
320
256
14
448
384
320
15
-
-
-
表 7: ビットレート対応表 :単位 bps
ビット内容
MPEG-1
MPEG-2
00
44100
22050
01
48000
24000
10
32000
16000
11
-
-
表 8: サンプリング周波数対応表 :Hz
29
ビット内容 レ イヤ 1,2 レ イヤ 3
00
4
0
01
8
4
10
12
8
11
16
16
表 9: モード エクステンション対応表:固定周波数帶
項目
割り当てビット数
信号長
12
大数領域の幅
9
全体の増幅度
8
スケールファクタの圧縮情報
4
窓関数の選択情報
1
符号木の選択情報 1
5×3
補助ブロックの増幅度
3×3
領域 1 の幅
4
領域 2 の幅
3
Preflag
1
スケールファクタの比率
1
符号木の選択情報 2
1×3
表 10: MP3 サイド 情報構成
3.4.3
サイド 情報
サイド 情報とは、レ イヤ 3 でモノラルの場合 17 バイトの情報を付加される、ステレオ
の場合は 32 バイトの情報を付加される。この部分には、対応するデータ部分をエンコー
ドしたときに用いたパラメータが格納されている。よって、このサイド 情報を参考にデ
コード を行っていく。このサイド 情報の構成要素とその利用ビット数を表 10 に示す。
30
3.4.4
メインデータと付加データ
表 6 に、フレームヘッダの詳細を示す。サイド 情報はウィンド ウ情報、領域措定など 、
メインデータのデコードに必要な各種情報を含む、メインデ ¿ ータはスケールファクタお
よびハフマン符号化された周波数コンポーネントを含む。
MP3 ストリームはハフマン 符号を使っていることもあり、可変長符号である。ところ
が 、MPEG-1 は基本的にフレーム固定長符号として定義されている。そのため、MP3 で
はヘッダサイド 情報とメインデータとがストリーム上で分離されている。
図 19 のように、フレームヘッダはビットレートで決まるビット数間隔で等間隔に配置
される。そのフレームに属するメインデータは、実はフレームヘッダより前から開始する
ことが可能であり、サイド 情報にはメインデータの開始位置を示す main data begin とい
うシンタックスがある。
この main data begin はフレームヘッダからメインデータの開始位置を示すマイナスの
バイトポインタである。このポインタの最小値は ”0”であり、この場合はそのフレームの
メインデータはサイド 情報の直後から始まることを示している。
main_data_begin
main_data_
begin=0
main_data_begin
図 19: MP3 ストリームの詳細
このような可変長にすることにより、多くのビット数を要するフレームには多くのビッ
ト数を割り当て、それほど 多くのビット数を必要としないフレームには少ないビット数を
割り当てるという自由度を与えることにより、音質改善の効果に大きく寄与する。
可変長符号といっても、デコーダの入力バッファサイズが規定されており、この入力
バッファ制御を通して瞬時ビットレートの変動を吸収し 、平均ビットレートが維持される。
31
MP3 では入力バッファ 7680 ビットが想定されている。たとえば 、128kbps/stereo 、サン
プリング周波数 48kHz の場合、フレームあたりのビット数は、
(128000/48000) × 1152 = 3072 ビット
で、余分に使えるビット数は、
7680 - 3072 = 4608 ビット
となる。
MP3 の最高ビットレート 320kbps/stereo の場合、フレームあたりのビット数は、
(32000/48000) × 1152 = 7680 ビット
で、余分に使えるビット数は、
7680 - 7680 = 0 ビット
となり、この場合は固定レートとなる。
一方、フレームヘッダが等間隔に配置されるということは、フレーム同期を単純にし 、
エラーが発生した場合の復帰も簡単になるというメリットがある。
3.5
MP3 のファイル形式
MP3 にはさまざまなファイル形式が存在するので、ビットストリームの解析方法を知っ
ているだけで 、すべてのファイルを再生することはできない。ここでは 、RIFF WAVE
ファイル形式を紹介する。
3.5.1
RIFF WAVE 形式
Windows での MP3 の使い方を解説する記事に、音楽データを CD から WAV 形式で吸い
上げて、それを MP3 に変換すると書いてある場合がある。しかし 、これは厳密には間違い
である。MP3 にエンコード する対象データは、PCM データでなければならないが、.WAV
拡張子のデータが必ずしも PCM だとは限らない。
Windows で .WAV という拡張子の付くファイルは RIFF WAVE 形式であるが 、これは
あくまでもファイル形式であり、格納されるデータの形式は 1 種類だけではない。PCM
以外に ADPCM やその他の形式も格納可能であり、MP3 データでさえも格納できる。
32
名前
バイト数
説明
チャンク ID
4
”RIFF”
4 チャンクサイズ -8
チャンクサイズ
WAVE ヘッダ
4
”WAVE”
表 11: RIFF チャンク
名前
バイト数
説明
チャンク ID
4
”fact”
チャンクサイズ
4
4
4 全サンプル数
サンプル数
表 12: fact チャンク
3.5.2
RIFF WAVE チャンク
RIFF WAVE は、いくつかのチャンクと呼ばれるデータブロックから成り立っており、
必ず RIFF チャンクで始まる (図 20 、表 11)。RIFF チャンクの中に、ほかの複数のチャン
クが内包されており、ほとんどの場合は fmt チャンクと fact チャンンク、data チャンクか
ら構成される。fact チャンクを表 12 、data チャンクを表 13 に示す。
RIFF
fmt
fact
data
図 20: RIFF WAVE 形式の構造
33
名前
バイト数
説明
チャンク ID
4
”data”
チャンクサイズ
4
サウンドデータのサイズ
サウンドデータ
X 上で示されたバイト分のデータ
表 13: data チャンク
fact チャンクは存在しないこともあるが、それ以外は必ず存在する。チャンクの順番は
一定とは限らず、最初のチャンクが必ず RIFF チャンクであること以外は不定となってい
る。ちなみに、どのチャンクも必ず 4 バイトのチャンク ID と、4 バイトのチャンクサイ
ズから開始されるので、読み飛ばしは簡単である。
4
MP3 エンコーダ
本節では Hybrid Filter Bank 、心理聽覚モデル、Iteration Loop 、ハフマン符号化、MP3
ビットストリームの形成について順に概略を述べる。
4.1
Hybrid Filter Bank
MP3 ては、サブバンド フィルタと MDCT(Modified Discrete Cosine Transform) を組み
合わせたハイブリッド 構成により、入力の 16bit 直線量子化された PCM データを時間領
域から周波数領域に写像している。
サブバンド フィルタは 512 タップの PFB(Polyphase Filter Bank) であり、時間領域か
ら 32 の周波数帯域に写像する。MDCT はプリエコー抑止と圧縮効率を考慮して 2 種類の
ブロック長を切替える適応ブロック長 MDCT であり、長ブロック時の MDCT ウィンド ウ
幅は 36 で 18 の周波数領域に写像されることから、PFB から出力される 32 の帯域全てに
MDCT を施して得られる周波数領域は最終的に 576 となる。MDCT 出力はエイリアシン
グ歪みを含んでいるため、MDCT 出力にエイリアシング歪みを除去するバタフライ演算
を行う。
34
4.2
心理聽覚モデル
このサブバンド フィルタバンクと並列して、心理聴覚モデルによる解析が行われる。こ
の解析結果に基づき、MDCT と量子化に対して効果が加えられる。
知覚符号化のメインの部分ではあるが、実際には無くても何とかはなる。基本的に、削
除しても問題ない場所をアドバイスするのがこの部分の役割であり、特に音質を求めない
のであればほとんどの場合外してしまっても大差無く用いることができる。
4.3
Iteration Loop
量子化は繰りかえすループをともなっており、まず非線形量子化のため各サブバンドを
3/4 乗して、時間領域でフレーム境界を越えたビット配分が行なわれる。この部分の詳細
については、エンコーダの高速化の部分に於いて述べる。
4.4
ハフマン符号化
このところで 、可逆な圧縮が行われる。これにより、最高度に圧縮されたデータとな
る。これで、基本的に MP3 としてのフォーマットは完成する。
4.5
MP3 のビット スト リーム生成
MP3 のデータストリームとして規格に乗っ取ったフォーマットに仕上げられる。この
ときに、実際に音声のデータ部分と、量子化ステップやブロックタイプなどのサイド 情報
がまとめられて、MP3 フォーマットのデータになる。
5
MP3 エンコーダの高速化
このセクションでは MP3 エンコーダの高速化を行った部分の詳細な処理と、その高速
化手法について説明する。
35
5.1
高速化の必要性
現在 MP3 は主に高速なパソコン上でエンコード されるため、エンコード 速度はさほど問
題でないようにも感じられる。しかし 、最近 PDA や携帯電話といった情報機器でも MP3
データを扱うようになって来た。また、MP3 用のポータブルタイプのオーデ ィオ機器も
たくさん出てきている。これらの機器に共通している点として、コストや消費電力の面か
ら高速な処理システムを採用できない、という共通点がある。これでは MP3 の持ってい
る高圧縮性能はこれらの用途に最適であるにもかかわらず、利用できない事になってしま
いる。
実際に、[7] の様に MP3 のエンコーダの高速化が行われており、いまだ MP3 のエンコー
ド 処理の高速化は重要な課題といえる。
そこで、MP3 のアルゴ リズムを変更し 、処理そのものの計算量を減らす。これにより、
十分に高速化が行われるなら、低速な処理システムにおいても十分に MP3 を利用するこ
とができるようになる。
[7] での MP3 エンコーダの高速化は、主に CPU をめい一杯使ってエンコード 速度を上
げるため、各アーキテクチャに特化させたアセンブラコードなどを用いて行っている。そ
れに対して、我々は MP3 のエンコード のアルゴ リズムを見直し無駄な処理を C 言語で表
記できるレベルで改良して行く。これにより、さまざまな所に於いてもパフォーマンスが
出ることを期待できると考えられる。
PCM
CODE
" #$ !
!
% & '(, &) *+
MP3
CODE
図 21: MP3 エンコーダのフロー
5.2
MP3 エンコーダ実行時の各処理のウエイト
MP3 エンコーダの処理を大まかに分けると、図 21 のようになります。高速化を行うに
あたり、どの部分の処理が最も時間がかかっているのかがわかれば 、効果的に改良を行っ
36
関数名
割合 [%]
quantize
30
mdct
10
count bit
10
L3 filter subband
..
.
8
..
.
表 14: 8hz-mp3 の各処理の割合
ていくことができる。そこで、gprof と言うプログラムを用いて、エンコーダの中でどの
部分の処理に最も時間がかかっているのか調査を行った。8hz-mp3 の場合を表 14 に示す。
この表から quantize という関数だけで 30%もの処理時間を占めてしまっていることが
分った。この、quantize という関数は非線形な量子化処理を行う関数ですが、もしこの関
数の演算量を削減、また呼出回数を削減できるなら、エンコーダ全体のパフォーマンスに
非常に効果的に効いて来る。よって、この部分の改良を中心に進めて行く。
5.3
量子化とその周辺の処理
ここで行われている処理は、主に最適な量子化ステップの検索と、その量子化ステップ
を用いた量子化です。この処理はグラニュールという 576 サンプルから構成されるものを
単位として、行われる。
5.3.1
非線形量子化
MP3 オーデ ィオ信号圧縮に用いる非線形量子化を以下の数式に示す
$µ
%
¶0.75
|X|
− 0.0946
I=
q
24
(14)
ここで、量子化ステップ q は整数である。また、bc は小数点以下を四捨五入して整数化す
る演算である。この演算を 1 グラニュールの全てに対して行う。
この式は、乗算や冪乗が組合わさっており、非常に計算量の多いものです。しかも、1
グラニュールの 576 要素全てに対して行わなければならないので、1 回の量子化処理は莫
大な計算量になってしまう。この処理は基本的に同じグラニュールに対して、1 度だけ行
37
われれば十分なのですが、そのグラニュールに対して用いる量子化ステップの決定にため
に複数回使われるため、実際には何倍もの回数の量子化が、同じグラニュールに対して行
われている。そのため、エンコード 全体の中での大きなウエイトを占めてしまっている。
[7] では非線形量子化公式を直線近似で求めて、計算量の削減を図る。[8] では仮数部と
指数部を分離して、仮数部の計算を二項定理を使用した。
5.3.2
量子化ステップ
q の値は量子化後の I の当該フレームにおける最大値が 、あらかじめ決められた値より
大きくなってはならないという MP3 の規定によって、通常 (負の値となる) 小さな q から
+1 ずつ、最大値を越えない最小の q が求められるまで量子化を繰り返す。
この繰り返しと、ハフマン符号化したときの利用可能ビット数を越えないための q の値
の補正を、あわせて MP3 では内部ループと呼ぶ。ISO 仕様書では、その内部ループ処理を
図 22 に示す。この方法では時間のかかる量子化処理を何度も繰り返すことになり、MP3
エンコーダの速度低下の一因となっていた。
5.3.3
初期量子化ステップの算出
初期量子化ステップとは、ハフマンエンコードが行える最小の量子化ステップのことを
指す。ハフマンエンコード はテーブルの参照で行われるので、量子化後の値がハフマン
テーブルに用意されているより大きくなるならハフマンエンコードが行えない。ハフマン
テーブルは 8192 程度までしか対応していないので、グラニュール中の最大値が必ずこれ
より小さな値になるようにする必要がある。仕様書ではこの量子化ステップを求めるため
に、量子化ステップをインクリメントして量子化、という処理をグラニュール中の最大値
が規定以下になるまで繰り返している。この処理の流れを図 23 に示す。このとき行われ
る量子化はハフマンエンコードできるかど うかを確かめるためだけに行われており、非常
に無駄なものとなっている。
この量子化を行わないで済むようにするだけで、大幅なスピード アップが望む。
初期量子化ステップの概算算出は仕様書で用いられている方法では非常に多くの量子化
を必要とするため非常に時間がかかってしまっていた。[6] は初期量子化ステップを -210
に固定している。これに対して [4] と [2] の初期量子化ステップを算出した値は正確では
ない。
38
yes
no
% !
+"&,#')- $ (*
.0/21234657
809
no
:);0<0=6> 5@?
A@B0CD
yes
図 22: ISO 仕様書の処理図
[4] と [2] では、初期量子化ステップを完全正確に求めることを止め、概算値で代用して
処理を低減する方式をとっている。この概算値は実際の初期量子化ステップより小さくな
るように設定されているので、余計な処理と無駄な時間を増やしてしまう。
5.3.4
最適な量子化ステップの探索
[4] と [2] は二分探索法を使って最適な量子化ステップを探索した。。2 分検索は初期量
子化ステップの概算値と +200 までの間で行われる。この方法でも量子化は必要となって
しまいるが 、かなりの量子化回数が削減される。
しかし 、検索の範囲を安全を見て+200 までと非常に広くとっているため、大部分のデー
39
1
!"
# $%
True
False
+=1
図 23: 仕様書の初期量子化ステップの算出
タにとっては無駄な所まで検索することになってしまい、この余計な処理に無駄な時間を
費してしまっている。また、初期量子化ステップがあくまでも概算値なのでその対策とし
40
て、もしハフマンテーブルに無いような量子化値が得られてしまった場合には、非常に大
きなビット数を消費していることにして回避している。その処理を図 24 に示す。
8hz-mp3 は仕様書で示されている処理に比べてそれなりの高速化は達成してはいるが 、
いまだ非常に計算量が多いものです。これを更に高速になるよう変更を加えて行く。
6
高速化方法
6.1
初期量子化ステップの計算方法
量子化は式 (14) に基づいて行われる。1 グラニュール中の最大値の絶対値を Xmax 、四
∗
、Xmax を量子化した出力を Imax 、
捨五入整数化を行っていない量子化値を Imax
ハフマン符号化テーブルに存在する最大の値を Ilimt とすると、以下のようになる。
$µ
: Imax
%
¶ 34
X
max
∗
= bImax
c=
− 0.0946
q
24
µ
¶3
Xmax 4
∗
Imax =
− 0.0946
q
24
Imax ≤ Ilimt
(15)
(16)
(17)
式 (16) は次のように変形できる。
µ
¶3
Xmax 4
∗
= Imax
+ 0.0946
q
24
µ
¶
4
Xmax
∗
= (Imax
+ 0.0946) 3
q
24
(18)
(19)
ここで、以下のように定数 C を定義する。
4
∗
+ 0.0946) 3
: C = (Imax
(20)
ここで、最適な初期量子化ステップの条件を思い出してみると、量子化後の最大値が、ハ
フマン符号化テーブルの最大値と一致するような、量子化ステップが理想であった。そこ
で、以下 Imax = Ilimt として考える。よって、C は次のようにも書ける。
4
C = (Ilimt + 0.0946) 3
41
(21)
!
.0/2123
4:0;25< 6879
no
" #$%'& (*)+,yes
図 24: ISO ソースと 8hz-mp3 の処理図
42
Ilimt は定数であるので、C も定数として扱えることになる。
さらに、Xmax と C を 2 進浮動小数点形式で表す。2 進浮動小数点形式で表したものを
以下に示す。
Xmax = Xf × 2Xe
(22)
C = Cf × 2Ce
(23)
ここで、Xf 、Cf はそれぞれの仮数部、Xe 、Ce はそれぞれの指数部を表す。
式 (19) に、式 (21) 、(22) 、(23) を代入すると、次のようになる。
µ
Xmax
q
24
¶
q
= Xf × 2Xe − 4 = Cf × 2Ce
q
2Xe − 4 =
q
2− 4 =
Cf
× 2Ce
Xf
Cf
× 2Ce −Xe
Xf
(24)
さらにここで、次のように定義される関数 g を導入する。
Cf
= 2g(Cf ,Xf )
Xf
µ ¶
Cf
g (Cf , Xf ) = log2
Xf
= log2 Cf − log2 Xf
(25)
(26)
式 (25) により、式 (24) は次のように表せる。
2− 4 = 2g(Cf ,Xf )+Ce −Xe
q
q
− = g (Cf , Xf ) + Ce − Xe
4
q = −4 (g (Cf , Xf ) + Ce − Xe )
(27)
(28)
(29)
これが 、量子化の逆関数となる。これで、量子化を繰り返す必要はなくなる。しかし 、
この演算は非常に多くの計算を要する。よって、近似値 q ∗ を計算することによりさらに
計算量の低減を図る。
43
近似値 q ∗ の算出方法を示す。いま、2 進浮動小数点形式のフォーマットを、指数部が整
数、仮数部が 0.5 以上 1.0 未満、とすると、以下のような条件が成り立つ。
−1 ≤ log2 Cf < 0
(30)
−1 ≤ log2 Xf < 0
(31)
−1 ≤ log2 Cf − log2 Xf ≤ 1
(32)
−1 ≤ g (Cf , Xf ) ≤ 1
(33)
よって、関数 g のとる値の範囲は限られていることがわかる。
また、近似値 q ∗ は、q よりも大きくなくてはならない。もし 、近似値 q ∗ が、q よりも小
さいとするならば 、q ∗ によって量子化される値は、ハフマンテーブルに存在しなくなって
しまうからである。
加えて、量子化ステップは整数である必要がある。Ce 、Xe は整数であることを考える
と、式 (29) より、近似したときの関数 g の値は 0.25 の整数倍である。
これらを考え合わせると、
g (Cf , Xf ) ∼
= −1
(34)
と置くことで、関数 g の計算が不要となる。これを用いて、量子化ステップの近似値 q ∗
を求めると、式 (29) より以下のようになる。
q ∗ = − 4 (−1 + Ce − Xe )
=4 (1 − Ce + Xe )
=4 (D + Xe )
(35)
ここで 1 − Ce は定数なので、D と置いた。この式で必要とされる演算は、1 回の固定小
数点数の加算とシフトのみである。よって、この演算のコストは非常に少ない。指数部の
取り出しも、X が浮動小数点形式で表されていれば 、ソフトで行う場合でも、ハード で
行う場合でも、まったく問題とはならない。また、近似値の精度であるが、この式を用い
ると量子化ステップは最大で 8 大きくなる。しかし 、図 26 に示した初期量子化ステップ
と最終的に用いられる最適量子化ステップの差の分布を見て分かるように、正確な初期量
44
子化ステップより 8 大きいとして問題無いことが分かる。ゆえに、この近似は利用できる
といえる。
もう少し精度のよい近似を試みる。式 (29) により関数 g を展開すると以下のようになる。
q = −4 (log2 Cf − log2 Xf + Ce − Xe )
(36)
この式の log2 Cf について考る。C は式 (21) で定義されている定数である。よって 、
log2 Cf は定数であり、式 (36) は、log2 Xf の関数といえる。ここで、
E = log2 Ce
(37)
と置くならば 、式 (36) は次のように書き改められる。
q = −4 (− log2 Xf + E + Ce − Xe )
(38)
このときの、2 進浮動小数点形式のフォーマットが先ほどと同様であれば 、以下のよう
な条件が成り立つ。
−1 ≤ log2 Xf < 0
(39)
ここで 、先ほどと同じ 条件、近似値 q ∗ は q よりも大きくなくてはならない、および 、
log2 Xf と E の値が 0.25 の整数倍である必要がある、の 2 つを加えて考えると、
log2 Xf ∼
=0
(40)
と置く必要がある。これより、量子化ステップの近似値 q ∗ を求めると、以下のように
なる。
q ∗ = −4 (E + Ce − Xe )
(41)
= −4 (F − Xe )
ここで E − Ce は定数なので、F と置いた。この式で必要とされる演算は、1 回の固定小
数点数の加算とシフトのみである。また、近似値の精度は、この式を用いることにより、
量子化ステップが最大で 4 大きくなる、ところまでに抑えることができる。
この近似式を用いて初期量子化ステップを求めることにより、参照で [3] の方法に比べ、
量子化が全く必要なくなり、大幅な処理コストの低減を行うことができる。
45
6.2
非線形量子化に最適化した近似演算方法
非線形量子化の処理は、式 (14) で定義される。この式で、とくにコストのかかる部分
は次に示す部分である。
µ
|X|
q
24
¶ 34
(42)
この式を以下の 2 つの式に分けて考える。
X
q
24
3
Z=Y4
(43)
Y =
6.2.1
(44)
Y の算出
まず、式 (43) の計算方法について考える。X は浮動小数点形式で表され 、仮数部 Xf 、
指数部 Xe に分けられ 、以下のように表せる。
X = Xf × 2Xe
(45)
これを用いて、式 (43) を書き直すと、
Xf × 2Xe
q
24
q
= Xf × 2Xe × 2− 4
Y =
q
= Xf × 2Xe − 4
(46)
このとき、q が 4 の倍数であれば 、シフトと整数の加算を用いて処理を行える。しかし 、
q は任意の整数なのでこのままではいまだコストのかかる処理である。そこで、 4q を、整
§ ¨
数部 4q と小数部 z 4q { に分けて考える。これを用いると式 (46) は次のようになる。
Y = Xf × 2Xe × 2−d 4 e × 2−z 4 {
q
q
= Xf × 2−z 4 { × 2Xe −d 4 e
q
46
q
(47)
q
0…00
0…01
0…10
0…11
1…00
−z 4q {
0
-0.25
-0.50
-0.75
0
0.75
0.50
0.25
0.75
0.50
0.25
2−1 × 20.75
2−1 × 20.50
2−1 × 20.25
20
20.75
20.50
20.25
負の値に +1
−z 4q {
2
20
1…01 1…10
1…11
q
表 15: 2−z 4 { のとる値
この、式 (47) を見ると、基本的に仮数部の部分と、指数部の部分とに分かれている。指
q
数部の計算である、2Xe −d 4 e の部分は、出力が浮動小数点形式である限り、単なる加算で
q
計算できる。また、仮数部の計算である Xf × 2−z 4 { の部分は、Xf と z 4q { をパラメータに
して、テーブルを参照するようにすれば簡単に近似値を得ることができる。Xf の任意の
精度分のビットをパラメータとして用いることにより任意の精度の近似値を得ることがで
きる。
このままでも、利用可能であるが、より小さいテーブルで効率的に実現できるように改
良する。まず、−z 4q { の取りうる値を考えると、± 合わせて、8 つの値をとる。その様子
を表 15 に示す。このとき、2 の補数形式で表記されているものとする。
表 15 を見ると、−z 4q { が、負の値を持つところがある。この負の部分を、正の部分と共
有できればテーブルを縮小できる。
そこで、q が正のときに、−z 4q { に 1 を加えるような処理を考える。ただし 、q の下位 2
ビットが 00 の時には何も行わない。また、−z 4q { に 1 を加えた場合には、指数部から 1 を
引き、値をあわせる。この部分は、表 15 のようになる。
この部分を式で表すと以下のようになる。


Xf









X
f
Y =







Xf




q
q
× 2(1−z 4 {) × 2(Xe −d 4 e−1)
(q > 0 かつ z 4q { 6= 0)
q
q
× 2−z 4 { × 2(Xe −d 4 e)
(q < 0 かつ z 4q { 6= 0)
q
× 2(Xe −d 4 e)
(48)
(z 4q { = 0)
また、逆に q が負のときに、−z 4q { から 1 を引くことでも、同様の方法で実現できる。以
下については、式 (48) を元に説明を行うが 、基本は同じであるので、対応するところを
変更することで、ど ちらにも適用可能である。
47
ここで、以下のような関数 r を定義する。
 ¡
¢
q

−
1
−
z
{
(q > 0 かつ z 4q { 6= 0)

4

r=
z 4q {(q < 0 かつ z 4q { 6= 0)


 0(z q { = 0)
4
(49)
式 (49) を用いて、式 (48) を表すと以下のようになる。


Xf









X
f
Y =







Xf




× 2−r × 2(Xe −d 4 e−1)
q
(q > 0 かつ z 4q { 6= 0)
q
× 2−r × 2(Xe −d 4 e)
(q < 0 かつ z 4q { 6= 0)
q
× 2(Xe −d 4 e)
(50)
(z 4q { = 0)
このとき、r は 、0, 0.25, 0.50, 0.75 、のいずれかの値を取ることができる。よって、式
(47) と比べると、テーブルが半分ですむ。テーブルの参照方法は、Xf と r をパラメータ
として使うことにより、実現できる。
次の問題点として、出力を浮動少数点形式とすると、仮数部は正規化されていなければ
ならない。しかし 、式 (50) の、Xf × 2−r は、必ずしも正規化されたものとなるとは言え
ない。ここで、浮動少数点の形式として、仮数部の条件が 0.5 以上 1.0 未満というものを
用いたとすると、式 (50) の、Xf × 2−r は、0.5 以上、約 1.68 未満となってしまう。
この対策として、規格化を行い、指数部へ補正を行わなければならない。そこで、テー
ブルに規格化された値と、補正ビットを用意し 、もし 、補正ビットが立っているなら、指
数部に補正を加えることによって、浮動少数点形式にのっとったフォーマットを出力でき
るようになる。この全体の流れを、図 25 に示す。
この近似値の計算方法では、精度はテーブル参照のために Xf の内何ビットを用いるか、
及び 、テーブルに格納されている近似値のビット数により定まる。
6.2.2
Z の算出
次に、式 (44) の計算方法について考える。X と同様に、Y も浮動少数点形式で表され、
仮数部 Yf 、指数部 Ye に分けられ 、以下のように表せる。
Y = Yf × 2Ye
48
(51)
X
q
%&'
"2 #$
!
*+,
"
-./0
+1
()
1
0
5
237 4 6 8:9;
Y
図 25: Y の算出
3
よって、Y 4 は、以下のように表せる。
3
3
Y = Yf4 × 2 4 Ye
49
(52)
ここで、 34 Ye は、次のように、シフトと加算のみで行える。
Ye
3
Ye = Ye −
4
4
(53)
しかし 、Ye が 4 の倍数でない限り、Y4e は実数値を取る。そのため、q のときと同様、整
数部と端数部とに分ける。
» ¼
Ye
3
Ye
−z {
Ye = Ye −
4
4
4
3
Ye
Ye
Z = Yf4 × 2−z 4 { × 2(Ye −d 4 e)
(54)
(55)
この式は、式 (47) と同じ形式であり、Y の導出に用いた方法と同様の手法を利用できる。
基本的にこの処理は 、浮動小数点形式で入出力されるので、この浮動小数点形式の特
性を用いたこのアルゴ リズムは非常に有効といえる。もとの方法では 、浮動小数点形式
の加減乗除と冪乗演算から構成されていたため非常に計算量が多いものでした。しかし 、
この方法ならば 、浮動小数点形式からの仮数部と指数部の取り出し 、整数の加算、テーブ
ルの参照だけで構成することが可能なため、計算量は非常に少なくて済む。この処理の呼
び出し回数を考えるならば 、エンコード 全体の処理の低減にも非常に貢献できると考えら
れる。
6.3
最適な量子化ステップの探索方法
初期量子化ステップは 1 グラニュール中の最大値によって定まる。この最大値はある程
度、そのグラニュールのデータの傾向を表しているといえる。よって、初期量子化ステッ
プと、実際に符号化に使用される終了量子化ステップとの間にはある程度の相関性がある
ことが考えられる。
この相関性を見るために 、約 100 曲ほど の音楽データをエンコードしたときの、各グ
ラニュールの初期量子化ステップと終了量子化ステップの差をまとめた。ここで用いる初
期量子化ステップは、我々が設計したものを用いた。文献 [4] 等が算出する初期量子化ス
テップは、正確でないためである。その結果を図 26 、表 16 に示す。
このデータから、初期量子化ステップと終了量子化ステップの差は 45 付近に集中して
分布することがわかる。この値は用いるデータに左右されるが、同様の傾向は見られるは
50
200000
150000
100000
50000
0
0
10
20
30
50
60708090100
40
図 26: 初期量子化ステップと終了量子化ステップの差の分布
標準偏差
平均値
6.619
44.588
表 16: 初期量子化ステップと終了量子化ステップの差の統計
ずなので、目的とする音声データの統計を用いれば同様の手法が用いることができるはず
である。
よって、この近辺において一番量子化回数が減少するように設計することにより、量子
化回数を削減できる。
ここで、次のように定義する。
51
B
C
D
20
0
A
図 27: 中心値 Qc 、偏差量 Qd 、初期量子化ステップ Qs の関係
Qs
初期量子化ステップ
Qe
終了量子化ステップ
Qa
初期量子化ステップと終了量
子化ステップの差の平均値
Qc
中心値 = Qs + Qa
Qd
中心値からの偏差量
これらの関係を、図 27 に示す。
ここで、仮に Qa = 45 Qd = 15 とすると、図 26 、表 16 から、80%程度のデータが 、図
27 の BC の領域に入る。
よって、次の様に領域を分割して検索することにより、BC 部分の量子化回数を減らし 、
全体の量子化回数の削減につなげることができる。その流れを図 28 に示す。
まず最初に 、図 27 の ABCD の内、ど の領域に Qe があるかを検索する。このために 、
Qc 、Qc ± Qd の 2 箇所での量子化を要する。この部分の処理を、図 29 に示す。
このとき、ほとんどの場合、BC のど ちらかの領域が選択される。ここの領域の検索範
囲は Qd となる。Qd は、ほぼ常に検索範囲全体の
1
4
よりも小さいので、より少ない量子
化回数で Qe に達することができる。
AD の領域に Qe がある場合には、量子化回数が増えることがあるが 、その領域にある
ことはまれなので全体的に見るならば 、十分量子化回数は削減されると考えられる。
また、さらに量子化回数を減らす方法として、図 30 、31 のような検索方法がある。 こ
の方法では、初めから、中心値 Qc ± 偏差量 Qd の範囲のみを 2 分検索を行う。そのため、
先ほどの方法に比べ、Qe が BC に該当する場合 1 回量子化回数が少なくてすむ。この時の
動きを図 30 中の終了量子化ステップ 1 へ収束する、点線の矢印で示す。また、BC から、
外れたものに関しては、検索領域の端まで来たところで、検索範囲を Qd ずつ拡張し 、再
52
+200
D
( )*+-,.
!"#$&% '
()*
C
B
()*/0,.
A
2
図 28: 領域分割による検索範囲の絞込み
びその領域を 2 分検索することで目的値に到達する。この時の動きは図 30 中の終了量子
化ステップ 2 へ収束する、実線の矢印で示す。Qe が AD の範囲の場合、量子化回数が増
えるが 、ほとんどを占める、BC 領域の量子化数が常に 1 減るので全体の量子化回数は、
先の方法よりさらに削減できる。
7
音質評価手法
MP3 エンコーダに対して改良を加えたことによる、性能の変化を調べる必要がある。
MP3 の場合、プログラムの実行速度だけでなく、音質の面でも性能を見なければならな
い。しかし 、MP3 の仕様として、デコーダの音質の性能評価方法は compliance test とし
て定められているが 、エンコーダについては何も規定がない。
そこで、エンコーダの性能評価に用いることのできる、ツールを作成した。この、ツー
ルの行う処理と、用い方を示して行く。
53
NO
!"
NO
#
$
YES
#$
A
YES
NO
#$
B
C
YES
#
$
D
図 29: 終了量子化ステップの該当領域の検索
7.1
評価処理概要
このツールは、2 つの wave ファイル間の音質差を評価値として出力することができる
ものである。その方法は 2 つの wave ファイル間の、各周波数成分毎の差分を、周波数方
向と、時間方向に平均を取り、この平均値を評価値として出力するものである。
このプログラムの構成を図 32 に示す。
7.2
音質差比較方法
まず、PCM の wave ファイルを 2 用意しそれぞれの wave ファイルの先頭から 1024 個の
PCM サンプルを取り出す。この取り出した、サンプルをそれぞれ 、1024 点 FFT にかけ
周波数分解を行う。ここで、FFT の出力値の log を取る。これは、小信号時の誤差が大信
54
+200
D
)'*+,-.,-.
!"#%$'&(
)'*+,-.
C
)*+
!"#%$'&10
)*+/-.
B
A
2
図 30: 拡張を用いた検索範囲の絞込み
号時の誤差に飲み込まれないようにするための対策である。
次に、各周波数成分毎の差を 2 つの wave ファイルの間で求める。この差を、周波数方
向に、二乗平均を取ることにより、周波数方向の平均を出す。これを、Xi と置く。
Xi の算出を、wave ファイルの 32 サンプル間隔で、毎回 1024 サンプルずつ取りながら
行う。この作業を、wave ファイルの終りまで続ける。その後、X1 から Xn までの、相加
平均を取り、評価値として利用する。
この評価方法を式で表すなら、次のようになる。
55
No
Yes
Exit
図 31: 拡張を用いた終了量子化ステップ検索のフロー
t i , ri
(i = 0, 1, ..., n)
Tj = [t32j , t32j+1 , .., t32j+1023 ]
Rj = [r32j , r32j+1 , .., r32j+1023 ]
56
1024sample
1024sample
WAVE1
....
WAVE2
....
FFT
....
FFT
....
log
....
log
....
........
Subtraction
........
32 32 32
1024sample
1024sample
1024sample
X1
X2
X3
X1 X2 X3
Xn
RMS
Arithmetic mean
Xi
Sound Quality
図 32: 音質評価プログラムの構成
OU T Tj = F F T (Tj )
OU T Rj = F F T (Rj )
OU T Tj = [outtj,0 , outtj,1 , ..., outtj,1023 ]
OU T Rj = [outrj,0 , outrj,1 , ..., outrj,1023 ]
v
u
¯2
1023 ¯
u 1 X
¯
outtj,k ¯¯
t
¯
RM Sj =
log
1024 k=0 ¯
outrj,k ¯
n
32
32 X
RESU LT =
RM Sj
n j=0
7.3
(56)
この評価方法の意義
基本的にデコーダの評価方法として定められている、compliance test と同じ手法を用
いても、音質の評価を行うことはできるが、音質の評価値が必ずしも音質に比例しない場
57
20
15
10
50
100
150
200
250
図 33: Compliance test の特性
合があると言う問題があった。その結果を、図 33 に示す。図 refeps01 に示した 2 本の線
は、2 曲に対して、MP3 のビットレートを変えることにより、音質を劣化させ音質差をつ
くり、それについて compliance test で評価を行ったものである。320kbps に対する劣化値
を、グラフとして描いている。これを見ると、2 曲に対して極低ビットレートに於いて、
評価値が音質に追従していない様子が見て取れる。
この対策として、我々は Compliance test で、時間方向にのみ誤差の平均を取っていた
のを、時間方向と周波数方向の誤差の平均を取るようにした。
7.4
評価手法の正当性
この評価方法が音質を評価するのに十分な性能を有しているかど うか、その評価を行っ
た。評価には、compliance test の評価に使ったのと同じように、複数な異なった曲に対し
て、MP3 のビットレートを変えることにより音質を劣化させ音質差をつくり、その音質
を測定することで行った。この結果を図 34 に示す。
この結果では、どの場合でも評価値が音質に追従している様子を見ることができる。よっ
て、十分音質評価に使えるだけの性能を持っているといえる。一部、平均からはなれて平
に推移する様な特性を見せているものがある。これは、piano 曲で使用している帯域が狭
58
2.5
2
1.5
1
50
100
150
200
250
図 34: 提案方法の特性
いなどの理由で、MP3 のビットレートを変更しても音質が変化しにくかったものと思わ
れる。
8
性能評価
MP3 エンコーダに対してさまざ まな改良を加えて来たが 、それらの正当性と性能につ
いて評価する。また、量子化回数については、gprof を使用して計測した。
8.1
1 フレーム当たり平均呼び出し 量子化回数
1フレーム当たり平均呼び出し量子化回数については、gprof を使用して計測を行った。
比較結果を表 17 に示す。図 2 の処理方法はハフマンテーブルの範囲内にならない最小の
量子化ステップから、1 ずつインクリメントしながら量子化を行う。図 3 の処理方法は初
期量子化ステップを概算して、二分探索法を用いた量子化ステップを算出を行う。しか
し 、図 3 では正確に量子化ステップを求めていないので、1 フレーム当たり量子化平均呼
び出し回数は多くなった。今回提案した方法では正確な初期量子化ステップを求めて、そ
59
表 17: 1 フレーム当たり量子化ルーチンに平均呼び出し回数
処理方法 量子化回数
図 2 の処理方法
100
図 3 の処理方法
30
今回提案した方法
9
して音声データの統計を取りその傾向を利用して、最もデータが集中しているところで、
検索範囲が狭まり、量子化回数が最小となるように設計を行った。今回提案した方法を利
用して、1 フレーム当たり量子化ルーチンに呼び出し回数は 9 回までに減らした。
8.2
全体処理時間の割合と量子化回数
今回提案した方法を適用したことによる、量子化回数の変化を表 4 に示す。この結果よ
り量子化回数が大幅に減少していることがわかる。全体処理時間の割合を 15%ぐらいま
で減らした。
表 18: 全体処理時間の割合と量子化回数の変化
8hz-mp3 の方法
サンプル
量子化回数
全体処理時間の割合 [%]
ピアノ
440744
28.33
音楽 CD
1152445
29.76
録音テープ
1023362
27.39
英会話教材
507293
29.96
今回提案した方法
サンプル
量子化回数
全体処理時間の割合 [%]
ピアノ
141751
14.96
音楽 CD
386900
14.86
録音テープ
409680
15.21
英会話教材
160835
14.56
60
実処理時間
サンプル
ISO/IEC の方法 [s]
今回提案した方法 [s] どのぐらい高速化 [%]
1
337
204
28
2
112
80
29
3
451
338
26
4
995
723
28
5
394
298
25
表 19: 実処理により高速化の結果
256kbps
標準
L
R
L
int2
0.85
0.85
int
0.84
piano2
R
今回提案した方法
L
R
L
1.25
1.26 1.47
1.47
0.84
1.25
1.23 1.48
0.61
0.62
0.98
piano
0.44
0.43
sph1
0.95
vo2
R
L
R
1.18
1.18 1.39
1.39
1.48
1.18
1.17 1.40
1.40
0.99 1.61
1.60
1.06
1.07 1.74
1.71
0.64
0.63 1.45
1.46
0.64
0.63 1.45
1.47
0.94
1.34
1.34 1.41
1.42
1.31
1.31 1.38
1.39
0.91
0.91
1.34
1.25 1.46
1.37
1.29
1.26 1.41
1.38
wa24
0.70
0.65
0.99
0.94 1.41
1.44
0.99
0.93 1.40
1.42
ys24
0.99
1.00
1.44
1.43 1.45
1.43
1.41
1.42 1.42
1.42
ys25
1.03
1.02
1.64
1.66 1.60
1.62
1.54
1.55 1.50
1.52
表 20: 今回提案した方法を適用したときの音質
8.3
どのぐらい高速化について
MP3 のエンコーダの実処理時間を測定した。その結果を表 19 に示す。
8.4
音質の性能評価
今回提案した方法を適用したときの音質がど うなるか検証を行った。その結果を表 20
に示す。
ここでは 、各音声ファイルの 256kbps の時の、ツールの評価値を 1 として規格化して
61
いる。
この結果を見ると、ほぼ同等の音質を得られていることがわかる。若干の差はあるが 、
図 34 の特性と見比べると、この程度の差では、音質として認識できるレベルではないと
いえる。よって、今回提案した方法は正常に動作しており、十分実用になると考えられる。
9
まとめ
本論文では、現在において音声圧縮の国際標準規格である MP3 エンコーダの量子化部
分を改良した。初期量子化ステップを計算して、さらに大量のデータ (音楽データ、英会
話教材、ピアノ、録音テープ ) を入力した際の統計的偏りを利用して、最適な量子化ステッ
プ値を探索することができた。結果として、量子化回¿ 数を減らすことができ、大きな音
質劣化が伴うことはなく、高速なエンコードが可能になった。
参考文献
[1] Moving Picture Experts Group : MPEG Home page,
http://www.cselt.it/mpeg/
[2] International Standards Organization : ISO Web Page,
http://www.iso.ch/
[3] ISO/IEC 11172-3,”Coding of Moving Pictures and Associated Audio for Digital
Strage Media at up to about 1.5Mb/s -part 3:Audio”,Aug,1993.
[4] http://www.8hz.com/mp3
[5] 貴家 仁志、村松 正吾:マルチメディア技術の基礎 DCT(離散コサイン変換) 入門、CQ
出版社 (1997)
[6] ”午後のこ∼だ ”
http://homepage1.nifty.com/herumi/soft.html
[7] 酒居、光成、成田、石田、藤井、庄司.MP3 エンコーダの高速化、情報処理学会 計
算機アーキテクチャ研究会、Vol.2001,No.76,pp.144-25
62
[8] Keiichi sakai,Itaru Fujiwara and Tadashi Ae: ”Extended VLIW Processor for RealTime Imaging”,Real-Time Imaging V,Proceedings of SPIE,Vol .4303,pp43-50(2001).
[9] 李 芝剛、 神山 智章、 清水 尚彦、
「 MP3 エンコーダの高速化」、
IPSJ Symposium Series Vol. 2001 、 No.16 、 pp.137-144 、 2001 年 11 月
[10] 神山 智章、李 芝剛、 清水 尚彦,
「音声の統計データに基づいた MP3 エンコーダ量子化回路の設計と評価」、
第 19 回パルテノン研究会資料集、 pp.39-56 、 2001 年 11 月
[11] 李 芝剛、神山智章、清水尚彦、
「 MP3 用高速量子化回路の提案」、電子情報通信学会
音声・DSP 研究会、 2001 年 9
[12] 李 芝剛、神山 智章、清水 尚彦 、
「 MP3 のエンコーダの高速化」、電子情報通信学会
VLSI 設計技術、2001 年 11
[13] 李 芝剛、神山 智章、清水 尚彦、
「 MP3 のエンコーダの高速化」、情報処理学会論文
誌第 43 巻、 第 6 号 2002 年 6 月
[14] 小杉篤史 城下聰
音響圧縮技術の基礎 第 1 回∼第 5 回 Interface Aug.2001 - Feb.2002
[15] 高見沢雄一郎 野村俊之 池川将夫
MPEG-2 AAC・MPEG-1 Audio Layer III エンコーダの SSE 命令による高速化
電子情報通信学会総合大会 D-14-28 2001 年
[16] 高見沢雄一郎 野村俊之
高速心理聴覚分析を用いた高品質 MPEG-2 AAC エンコーダ
電子情報通信学会総合大会 D-14-29 2001 年
[17] 松尾浩 三橋薫 岩垂正宏
高速 MDCT 計算方法に関する研究
電子情報通信学会総合大会 A-4-17 1998 年
63