ここ最近mp3にハマっており、様々な調査・検証を重ねるうち、ついに世界初のFraunhofer製ソフトウェアエンコーダである【l3enc(1994年3月v0.99a公開)】にまで行き着いてしまいました。
 

l3encの開発・配布は1997年12月(v2.72)まで継続し、以降はMP3encに引き継がれますが、
Windows95が全盛であった当時、【l3enc】も当然MS-DOSベースのWindow95に合わせて設計されたコマンドラインツールであることから、現在のWindows10~XPのNT系ベースのOSでは動作しません。
うちにある古いPC(WindowsXP環境)で、代表的なフロントエンド(マウスを用いた簡易操作ができるようGUIを備えアプリケーション)をいくつか試しましたが、まったく動作せず徒労に終わりました。

どうにかして【l3enc】をWindows10~XP環境で試す方法はないものかと、あれこれネットを検索していると、DOSBoxなるエミュレータが存在することが判明。
MS-DOSエミュレータは他にもいくつかありましたが、今回はDDSBoxで【l3enc】を使用する方法を解説したいと思います。

  1. まずは以下からDOSBox本体と、l3encをそれぞれダウンロードします。
    ・DOSBox
    https://www.dosbox.com/
    ・l3enc(最終バージョンは2.72)
    https://www.rarewares.org/rrw/l3enc.php
     
  2. 次にDOSBoxをインストール&l3encを解凍した後、l3encに関するファイルとエンコードしたいwavファイルを以下のとおり配置します。

    なお、l3encが読めるwavファイルは16bit 44.1kHzに限定される(レジスト後は16bit 48kHzまで可)ため、予めDAWやdBpoweramp等でビットレート&サンプリングレートを合致させる必要があります(精度に関する検証は過去ブログを参照願います)。
    (非レジストの場合、以下のような表示が出ます。)

     
  3. 続いて、DOSBox側の環境設定を行います。
    設定ファイル「dosbox-0.74.conf」をメモ帳等で開き、以下の項目を修正&保存します。
    ・(修正前)cycles=auto ⇒ (修正後)cycles=max
    ・(修正前)memsize=16 ⇒ (修正後)memsize=31

    ・最終行[autoexec]に次の2行を追加します。
    [autoexec]
    mount x c:\l3enc
    x:

     
  4. dosbox.exeをクリックして起動させ、x:\>と表示されていればOKです。
    その状態で以下をキーボードから入力し、「Enter」を押せばエンコードを開始します。
    l3enc a.wav b.mp3 -br 256000 -hq -crc
    ※a.wav : エンコードしたいwavファイル
    ※b.mp3 : l3encが新たに生成するmp3ファイル
    ※-br : ビットレート(8~256kbpsの範囲で記述)
    ※-hq : 高品質(処理速度が低下)

     

DOSBoxは安定した動作と高い再現性が売りのエミュレータですが、CPUやメモリまで忠実にエミュレートしているため、処理速度は最大でPentium3相当です。
さて、肝心のl3encが生成するmp3のクオリティですが、音質的にはRadiumや現行LAMEと比べても遜色なく、プロトタイプとは思えないほど高品質です。

処理速度は激遅だったものの、mp3の圧縮技術基盤は1994年時点でほぼ確立されており、mp3の歴史はその品質を維持しながら処理速度をどれだけ短縮できるか、すなわち高速化の歴史であったことに今更ながら気付かされました。


ただ、l3encは完璧ではなく、冒頭に32/1000秒、末尾に一定の空白が付加されるのと、ごく僅かながらエンコードの進行と共に波形にズレが若干生じているのが気になりました(後述する差の絶対値はズレを除去して比較しています)。

LAMEも総時間はオリジナルと一致しているものの、全体的に僅かな波形のズレが見られます(総時間が一致していることからズレ修正不可)。

 

l3en(256kbps、44.1kHz、CBR、黒占有率72.2%)

 

Radium(256kbps、44.1kHz、CBR、黒占有率72.6%)

 

LAME(256kbps、44.1kHz、CBR、黒占有率19.2%)

 

LAME(240kbps、44.1kHz、VBR、黒占有率19.0%)

 

 

<番外編>

数回に渡る検証の結果、Fraunhofer系エンコーダはmp3ファイル生成時、冒頭に29/1000秒の空白が付加され、末尾に押し出された音にも19/1000秒の空白が付加されることから、オリジナルと比べ総時間数が増加します。

一方、LAME系エンコーダは冒頭は一致しているものの、末尾が僅かにカット(不自然さを和らげるためか勝手にフェードアウト処理)されることから、総時間が減少します。

 

l3enc 黒占有率 95.56135%

現在のPCで使用が困難な元祖DOSコマンドラインツール【l3enc】が、末尾が削られるmp3の欠陥仕様にも対策が講じられており、変換精度の高さが見て取れます。

 

LAME 黒占有率 95.55039%

※右端の縦ラインがカットされた箇所を無視した黒占有率 95.67481%

LAME(2023年1月時点で最新のv3.100.1を使用)は次点ではあるものの、末尾カット部分を無視すると黒占有率(変換精度)が最も高くなります。末尾カット対策にフェードアウトを用いているため、厳密にいうとオリジナル音源の末尾が1000分の数十秒削られていますが、人間の耳での知覚は極めて困難でしょう。

 

Radium 黒占有率 95.8041%

Fraunhofer系エンコーダのためl3encと非常に似た傾向で、後半以外の変換精度は極めて高いのが特徴です。

 

【結論】

今回のブログは本編と番外編の2部構成になっていますが、番外編だけを見ると末尾1000分の数秒が削られることを許容できるのであれば、LAMEの最新版が最良という判断になります。

しかしながら、本編の検証結果でLAMEは開始時点で波形は一致しているものの、徐々にズレが生じていることが差の絶対値の画像からも明白です。

Fraunhofer系エンコーダはmp3の特性(欠陥仕様含む)を熟知した上で、きちんと対策を講じており、品質的にも非常に安定しています。

LAMEはある部分ではFraunhofer系エンコーダに優っているものの、未完成な部分も多く、もう少し掘り下げて検証を継続したいと思います。