音声圧縮技術の音質評価基準14

Otachan's in_mpg123.dll for Winamp とmpglib (foobar2000) と MAD (foobar2000) とAudioactive MP3 decoderのデコード (16bit linear PCM) の違いは16bit 整数で最大 1 の差しか発生しない (例外的に最大 2 の違いが発生することもある)。
lame.exe --decode によるデコード結果は LAME タグを使ったギャップレス再生に対応しないことを以外はmpg123 のデコードと同じである。
最下位1ビットの差が発生したサンプルを数えてみるとmpg123 とmpglib は非常に近く、MAD とAudioactive もかなり近いこともわかる。
だが、Hydrogenaudio wiki - Best MP3 decoders では充分正しい (accurate enough) とされている MPAdec のバイナリを best MP3 decoder... for sound quality #18 からダウンロードして確認してみたが、16kHz以上で別のデコーダーとかなり違いが生じた。

圧縮する前の元の音源とサウンドスペクトログラムを聴き比べたら、MPAdec 以外のデコーダーの方が圧縮する前に近いスペクトログラムを達成していたので、MPAdec に問題があることがわかる。
MPAdec のソースまたはバイナリの作成方法に問題があることだと考えられる。
こんなことがあるのでMP3デコーダーを選ぶ際は警戒することが必須である。
Sound Player Lilith のMP3デコーダーも視聴してみた。

0.991b のMP3デコーダーと上記の正しいと確認されているデコーダーと比べたらデコード結果には 16bit 整数で最大 3~4 の差が頻繁に現れ、極めて少ないが16ビット整数で数十もの差が現れることがあった。
たとえばhttp://lame.sourceforge.net/gpsycho/quality.htmlからダウンロードできる KMFDM-Dogma サンプルを LAME 3.96.1 -b 320 でエンコードして作ったMP3ファイルはそういう例になっている。
そのMP3ファイルを Sound Player Lilith 0.991b とそれを除く正しいともう知っているMP3デコーダー (mpglib、MAD、Audioactive 等) を使用してデコードして比べたら16ビット整数のピーク値で40もの差があった。
しかし Sound Player Lilith の最新バージョンのMP3デコーダーではこれらの問題は解消されている。
「設定→その他→オンラインアップデート→デバッグ用コンポーネントをチェックする→OK」でアップデートすれば Sound Player Lilith の正しくなったMP3デコーダーを使える。

問題が発見された場合でも数日間で改善する Sound Player Lilith の開発者には頭が下がる思いである。
正しくバグのないMP3デコーダーであればどれをする場合も音質は同じだが、充分な試験を十個数ることは依然として必須だろう。
ネットでの評価など全然あ頼りにしてはいけない。
頼もしいのは充分な試験結果だけである。
iTunes 5.0.1.4 の MP3 デコーダーも視聴した。

色々なデコーダーでhttp://lame.sourceforge.net/gpsycho/quality.html からダウンロードできる音源を LAME 3.96.1 -b 320 でエンコードしたものをデコードして聴き比べた。
その結果 iTunes と MAD (foobar2000)、Sound Player Lilith のあいには 16bit 整数で最大 2 の差が過半数のサンプルであった。
しかし iTunes と mpglib (foobar2000) の間には最大で 1 の違いしかない。
MAD (foobar2000)、Sound Player Lilith、mpglib (foobar2000) の中の任意の2つの違いは1つの例外以外は最大で 1 だった。
例外は applaud サンプルでそのケースは mpglib (foobar2000) と MAD (foobar2000)、Sound Player Lilith のあいで最大 2 の差が生じた。