Mac OS X 10.5/QuickTime 7.3で導入された新しいAACエンコーダの検証

最終更新日: 2008/10/16

検証方法

CBR、ABR、VBR(Constrained)、VBRの4つのモードでエンコードしたファイルのビットレート変動を解析し、それぞれがどのような特性を有しているかを調べた。また、過去のバージョンのAACエンコーダや、Vorbis・Nero AACといった他のエンコーダのVBRモードと比較した。使った曲はおよそ18分の、4トラックを含むCD音源。環境はOSX 10.4.11 (x86/PPC)。

用いたツール

AACbitrateGrapherとMP3BitrateGrapherの使い方

AACbitrateGrapherは今のところOSX専用だが、MP3BitrateGrapherはgccがある環境ならおそらくコンパイル可能。使い方は

% aacbitrategrapher file [resolution]
で、fileに解析したいファイルを指定する。resolutionはオプションで、時間軸の解像度を何サンプル毎にするかを指定する。何も指定しない場合は、ファイルのサンプル周波数を指定した事になる(つまり1秒単位で平均ビットレートを出力)。AACは1024、MP3は1152が指定できる最小の値になる。

正常に処理が終わると、カレントディレクトリにファイル名_bitrate.pltとファイル名_bitrate.txtという2つのファイルが出力される。.pltファイルをgnuplotに読ませる事により、グラフが表示される。

% gnuplot file.m4a_bitrate.plt
もしくは
% gnuplot
 (中略)
Terminal type set to 'aqua'
gnuplot> load "file.m4a_bitrate.plt"
のようにする。y軸の範囲などは.pltファイルを適宜修正してほしい。

注意

ここに載せた解析結果のみでは、エンコーダの音質評価にはなり得ない事に注意する事。非可逆音声圧縮技術における音質を、ブラインドで行うリスニングテスト以外で評価する事は大変危険である。

なお、音質について多少言及しておくと、QT 7.3のAACエンコーダでは、従来のQT AACのキラーサンプルとされていた、音の定位がエンコード後に中心寄りになるケースに改善が見られる。依然としてM/SのSideチャネルが大きく間引かれる傾向はあるものの、人間の耳にとって定位に影響を与え易い低周波の音がなるべく間引かれないように改良されている。あくまで推測だが、周波数(sfb)ごとにJointStereoのL/RとM/Sを切り替える閾値の制御が改善されたものと思われる。

QuickTime 7.3のAACエンコーダによるビットレート変動の解析結果

グラフは、一秒間の平均ビットレートの推移を示している。

CBR

目標の128kbps付近を常に保っている。わずかに変動幅があるのはビットリザーバのためか、微妙にABR的な挙動をしているためか、はちょっと判断できない。

ABR

CBRよりもビットレートの変動幅が大きい。平均を中心にビットレートが上がったら下がる、下がったら上がるを繰り返している。目標値からのずれをなるべく補償するようにビットレートが変動するようだ。現在のiTunes 7.5+QT 7.3でVBRのチェックボックスを外すと、このモードが使用される。

VBR(Constrained)

ABRよりもビットレートの振れ幅は大きいが、上下動自体は緩やかになっている。これは、ABRよりも長い時間でビットレートの平均化を試みているためと考えられる。グラフを見ると、ABRは数秒程度だが、VBR_cは10〜30秒程度のオーダで平均化しているように見える。この差が顕著に分かるのは曲間の無音部分で、例えば4分過ぎの無音部分に着目すると、ABRではビットレートが下がった直後に大きく上昇し、すぐに平均化を行っているのに対し、VBR_cでは平均を超える時間がしばらく続き、より長い時間浮いた分の容量を使えるようになっているのが分かる。現在のiTunes 7.5+QT 7.3でVBRにチェックすると、このモードが使用される。

VBR

これまでのグラフとは異なり、平均値を中心としてビットレートが変動していない。4分までの1トラック目では平均値よりも低め、また15分過ぎからの4トラック目では平均値よりも高めの推移を見せているのが分かるだろう。目標とするビットレートがそもそも存在しないことから、基本的にビットレートの平均化は行わないはずだが、例外的に無音部分の極端にビットレートが下がった付近では局所的に平均化を行っているようにも見える。

古いバージョンのQuickTime AACエンコーダとの比較

古いバージョンであるQuickTime 7.2のAACエンコーダとの比較を行った。ちなみに、ここには詳細を記載しないが、少なくともQT 7.0.2からQT 7.2に至るまでは、AACエンコーダに変更は無いようだ。そのため、"QT 7.2"の部分は、適宜他のバージョンに読み替えても当てはまる。

CBR

QT 7.3のCBRとビットレートの変動幅は同じかやや大きい程度だが、無音部分でビットレートを下げている点が異なる。ABR的な挙動がやや強めに入っているようだ。

ABR

QT 7.2においては、XLDでABRに変換するとVBRと同じファイルが、afconvertでABRに変換するとCBRと同じファイルができるという奇妙な現象に遭遇した。いずれにせよ、QT 7.2には独立したABRモードというのは存在しないようだ。

VBR(Constrained)

ビットレートの変動幅が小さく、QT 7.3のVBR constrainedモードとはかなり異なった傾向を示している。QT 7.3の同モードがビットレートの変動をある程度大きく許す代わりに時間軸上でビットレートの平均化を行う傾向にあるのに対し、QT 7.2ではビットレートの変動幅自体を制約しているように見える。グラフの形自体はQT 7.3のtrue VBRモードのグラフを平らにしたものに近いかもしれない。

比較のまとめ

他のエンコーダのVBRモードとの比較

Ogg Vorbis

様々なビットレートのレンジで高い評価を得ているVorbisのVBRはこのようになった。ビットレート変動の傾向はQT AACのVBRと良く似ている。

Nero AAC

QuickTimeと並んで定評のあるAACエンコーダ。VBRはVBRなのだろうが、QT AACやVorbisのVBRと比べると傾向がかなり異なる。

FAAC

iTunesとNeroが主流になってからはほとんど注目される事のなくなったオープンソースのAACエンコーダ。Nero AACと変動の傾向が非常に良く似ている。

LAME MP3

MP3ではトップクラスの品質を誇るエンコーダ。VBRの使用が推奨されている。1トラック目の変動はNeroやFAACに近いが、それ以外はQT AACやVorbisに似ている。

FhG MP3

MP3の本家であるFraunhofer IISによるMP3エンコーダ。変動幅は小さいが一応VBR的な挙動を見せている。グラフの形はQT 7.2 AACのVBR constrainedモードに近い。

Helix MP3

MP3におけるVBRエンコーディングの先駆けであるXing由来のオープンソースなエンコーダ。LAMEと同じく、VBRらしい挙動を見せている。

iTunes MP3

古くはCasady & GreeneのSoundJamに由来するAppleのMP3エンコーダ。評判はあまり良くない。これをVBRと言うにはお粗末で、無音部分でビットレートを下げる事すらやっていないようだ。

追記: どうやらiTunesのMP3エンコーダはマルチスレッド環境ではVBRがまともに動かないらしく、コアを1つ殺してエンコードしたところ次のようになった。

相変わらず無音部でビットレートが下がっていないが、VBR的な挙動を示している。128kbpsを大きく超えてしまっているが、これはiTunesが指定したビットレート〜その2倍の範囲でビットレートを変動させるためである (つまり、128kbps指定なら128〜256kbps)。128kbpsぐらいでエンコードしたい場合は、112kbpsに指定するとちょうど良い感じになる。

結論

LeopardもしくはQuickTime 7.3のAACエンコーダは、過去のバージョンから大幅に刷新されている。新たに導入されたVBRモードは、真のVBRと言って差し支えないだろう。一方、現在のiTunes+QuickTime 7.3で使う事のできるVBR constrainedモードは、ビットレートの目標値を重視する傾向が大きいことから、制約付きVBRと言うよりは制約の緩いABRと言った方が適切であるように思える。また、変動の傾向自体もQuickTime 7.2までのVBR constrainedモードと異なる事から、利用にはやや注意した方が良いかもしれない。iTunesでデフォルトとなったQT 7.3のABRモードについても、これまでと比較して激しいビットレートの変動が確認されたことから、実際に音質向上に寄与しているかをリスニングテスト等で判断する必要があるだろう。iTunesで今のところ真のVBRモードを選択できないのは残念だが、今後のバージョンアップで使えるようになる事を期待したい。


もどる

このページはリンクフリーです。
一応連絡先