動かざることバグの如し

近づきたいよ 君の理想に

最高音質のLAMEコマンドラインオプション

昔mp3lameのオプションを調べていた頃に、面白いサイトに出会った記憶がある。

再度探したが全然見つからなかったが、どうやらインフォシークが閉鎖していたからっぽい。

幸い文字化けしつつもInternet Archiveからサルベージできたので一部を記載する。

ここでの教訓はなにもmp3lame意外にも通用するものだと思う。


オプションと解説

“最高音質”のMP3ファイルを作りたければ LAME 3.96.1 の lame.exe で次のコマンドラインオプションを使うことをおすすめする。

--vbr-new -V0 -b256 -F -f -m s --notemp --nores --interch 1 -p -k

あまり知られていないことだが“最高音質”のMP3ファイルを作るためには --vbr-new -V0 を基礎にコマンドラインオプションを構築しなければいけない。以下は音質のチューニングのためのオプションの解説である。

-b256 -F は強制的に 256kbps 以上でエンコードするためのオプションである。 -F を忘れてはいけない。 -F を付け忘れると LAME は 32kbps の最低ビットレートを勝手に利用してしまい、音質を劣化させてしまう。 -F オプションは強制的に -b オプションで指定した数字以上のビットレートだけを使うオプションである。

LAME に詳しい人は -f オプションが使われていることに驚くかもしれない。それは誤りではない。実際 LAME 3.96.1 の CBR では“最高音質”の -q0 オプションを付けた場合と高速エンコードのための -f オプションを付けた場合の音質は等しい。

この事実を疑いたい方は次の二つを実際に聴き比べて欲しい。

applaud_LAME3.96.1_cbr128-f.mp3 (--preset cbr 128 -f でエンコードした結果) applaud_LAME3.96.1_cbr128-q0.mp3 (--preset cbr 128 -q0 でエンコードした結果)

これらは applaud.wav を LAME 3.96.1 の lame.exe でエンコードした結果である。

applaud.wav は http://lame.sourceforge.net/gpsycho/quality.html からダウンロードできる applaud.wv をデコードしたものである。 (applaud は The Eagles - 1994 Hell Freeze Over - 06 Hotel California (Live) の終わりの部分から採取されたサンプル音源である。オーディオ圧縮技術の開発者のあいだでは難しいサンプル音源として非常に有名である。)

上のMP3ファイルを実際に聴き比べてみればわかるように、-q0 を付けて作った“最高音質”の MP3 ファイルと -f による高速エンコードで作った MP3 ファイルの音質はほぼ等しい。この事実からわかることは -q0 だけではなく -f もまた“最高音質”だということだ。同じ“最高音質”ならばエンコードが速くなる -f オプションを使った方が得である。これが -q0 ではなく -f を使う理由である。

LAME に詳しい人は 256kbps 以上の高ビットレートで -m s オプションを使うことに納得しているだろう。ビットレートが高い場合にはジョイントステレオを使わずに、 -m s オプションによってシンプルステレオを使った方がステレオ分離性の問題が解決するので全体の音質は向上することになる。

--notemp --nores --interch 1 は音質の微調整のためのオプションである。それらの意味は簡単ではないのでここでは説明を省略する。

-p オプションはエラープロテクションのためのオプションである。安全のため付けたおいた方が良いだろう。

最後の -k はローパスフィルターを禁止するためのオプションである。 LAME はデフォルトの設定のままでは音質にとって重要な高い周波数の音を勝手にカットしてしまう。できるだけフラットな周波数特性を得るためには -k オプションは絶対に必要である。

バッチファイル bestlame.bat

上記の“最高音質”のLAMEコマンドラインオプションをバッチファイルにした bestlame.bat を用意しておいた。“最高音質”のMP3ファイルを作りたい人は自由に利用して欲しい。

ダウンロード:bestlame.bat

bestlame.bat の基本的な使い方

パスの通った場所に LAME 3.96.1 の lame.exe と bestlame.exe を置いておき、コマンドプロンプトで次のようにして使う。

bestlame.bat file.wav file.mp3

bestlame.bat の EAC での使い方

ExactAudioCopy で bestlame.bat を使うためには次のように設定する。

  • エンコードに外部プログラムを使用する:オン
  • エンコーダ別パラメータ:ユーザー定義のエンコーダ
  • 使用する拡張子:.mp3
  • エンコードに使用するプログラムをパス名を含めて指定:bestlame.batのパスを指定
  • 追加のコマンドラインオプション: %s %d

bestlame.bat の CDex での使い方

CDex で bestlame.bat を使うためには次のように設定する。

  • エンコーダ:External Encoder
  • エンコーダパス:bestlame.batのパスを指定
  • パラーメータ配列: "%1" "%2"
  • 拡張子:mp3

“最高音質”を御堪能あれ。 :p

ねた!


解説

このページにある MP3 ファイルを実際に聴いてみた人はこのページ全体が「ねた」であることにすぐに気付いたはずである。

  • 「--vbr-new -V0」を単独で使うのは悪くない。しかし余計なオプションを追加するのは止めた方が良い。
  • 「-b256 -F は強制的に 256kbps 以上でエンコードするためのオプションである」という主張は正しいが、このオプションの効果は無駄にビットレートを上げるだけである。 LAME は無音部分とみなせる場所では最低ビットレートの 32kbps を使うように設計されている。
  • LAME 3.96.1 では --preset cbr 128 -q0 の音質は --preset cbr 128 -f に迫る勢いで悪くなる。これは -q0,1 のバグが原因である。 LAME 3.96.1 の CBR で -q0 を使っている人は -f と同程度の音質を思いっ切りエンコードを遅くして聴いていることになる。しかも“最高音質”だと思い込みながら!
  • -m s を使うと音質は劣化する。
  • --notemp --nores --intrech 1 は音質を悪くするために付けてあるオプションである。
  • -p は無駄にビットを消費するための付けてある。
  • -k でローパスフィルターをオフにすると音質にとってあまり重要でない高周波成分にビットを多く割り振らなければいけなくなるので音質は劣化する

http://lame.sourceforge.net/gpsycho/quality.html からオリジナルの音源をダウンロードしてこのページの MP3 ファイルと聴き比べれば音質がひどく劣化していることがすぐにわかるだろう。なお WavPack で圧縮してある WV ファイルを再生したりデコードしたりするためには foobar2000 が便利である。

youcantdothat_bestlame.mp3 のビットレートは 265kbps もある。音質のひどい劣化は特に右チャンネルで起こっている。ビットレートを高くしてパワースペクトルを圧縮前のそれに近づけつつオプションの組み合わせによって音質をここまで劣化させることができるのだ。

このページが「ねた」であることを理解できた人は他人がすすめるLAMEの複雑なコマンドラインオプションを安易に使うのは止めた方が良いことも納得できるだろう。 LAME の基本は -q 0 や -m s や -k のような余計なオプションを付けずに使うことである。

同様にパワースペクトルの比較による音質の優劣の判定は全然あてにならないこともわかる。藤本健氏によるMP3ファイルの音質の分析は有害なデンパそのものである。

このページを作るにあたって以下のページを参考にした。

LAMEコマンドラインオプションを弄ぶこと」とこのページの「ねた」は大して違わない。プラシーボ効果を防ぐ工夫をせずにオプションを弄んでいる人は実際には音質を劣化させているのに「音質が改善された」とか「好みの音質になった」と信じているに違いない。


参考リンク