mp3 encorder impression

TOPページに戻る

99/11/8 今、読み直すとなんか変なこといっぱい書いてますね。(^^;)でも書き直すの面倒なのでそのままにしておきます。まぁ当時はこんなこと考えていたと言うことで...

98/6/22 ここはmp3のエンコーダーに関するコメントです。まぁ独断と偏見で書いてますので、まぁこんなもんかという程度で見て下さい。


Mpeg Layer3 Encorder の 音質

 これまでf特の項目でいろいろ書いては見た物の、結局音は聴いた感じがすべて。スペックがどんなに良くても、聴いてみるといまいちなんてことは良くある話なので。 さっそく、試聴の準備だが、ART833のデジタルアウトが今ひとつまともに動いてくれないので、a : PC - ART833 - MD Player - HeadPhone(SONY MDR-CD100) というシステム以外に、b : PC(9821V200) - 内蔵音源(118相当) - カセットデッキ(A&D GX-Z9000) - HP というシステムで試聴した。ヘッドホンは10年弱愛用しているSONYのもので、イヤーパッドのあたりなどボロボロであるが、特に試聴には影響ないであろう。またPCのヘッドホン端子よりは、A&Dのカセットデッキのヘッドホンアンプの方が多少はましであろうと思われるので、サウンドカードのラインアウト端子からカセットデッキのラインインへ接続することとした。それにしてもSNが悪い..本当ならもうちょっとましなサウンドカードで試聴すべきだと思ったのだが、以外とこの状態でも差が出たので、まっとうなサウンドカードだともっと違いがはっきりわかるのではと思われる。
 試聴は、CASIOPEA の MINT JAMSから TAKE ME、矢野顕子のごはんができたよからひとつだけ、TELARC の SAMPLAR2 から LOSオリンピックのファンファーレ、スペイン奇想曲、などで行った。windac32でCDからWAVEファイルを作製し、それを表1に示したエンコーダーを用いて(以降、xing、prod、mpencと略記する) 128bpsの.mp3ファイルを作製。再生は、Winamp 1.91sp1 を用いて、decorde quality は 64bitを選択して行った。
 まず、TAKE MEだが、スネアのリムショットのアタック音の直後のハイハットの音(余韻)などに注目。これがけっこうざわざわしていまって気持ちが悪い。似ていると言えば、dbx等のNRのブリージング現象などに近い感じである。一番気になるのがmpencでf特を上までのばしているためかと思ったが、16kHzから上をカットしているxingが気にならないかというとそうでもなくprodでエンコードしたデータが最も聴いた感じ良かった。ただprodにしても、良かったというのはたの2つよりは、多少ましかなという程度で、ビットレートを192bpsあたりまで上げると、ほとんど気にならなくなった。
 次はTELARC SAMPLAR2の試聴。これはxingでエンコードしたものが、ブラス系の音の高域で散乱する感じ、グランドシンバルの響きなどがいまいちのような感じ。ただ、aでは違いがわかりやすいが、bの方ではほとんど違いがわからない。これはbのシステムではサウンドカード自体のf特やSNの問題もあってあまり違いが明確にわからなかったのではないかと思われる。

 これだけエンコードエンジンの違いが出てくるとけっこう面白い。MDデッキ等ではATRACのエンジンを簡単に積み換えるわけには行かないが、これなら新しいエンコーダーが出てくればすぐに利用できる。これはオーディオ好きな人たちにはけっこう面白いことかもしれない。

 本当なら、エンコードのアルゴリズムなどの違いを調べてから上記の試聴の結果と対応させて考察したかったのだが...まぁそれは今後の課題...ということにしておきましょうか。


Mpeg Layer3 Encorder の 速度

一応速度も測ってみました。試用した圧縮に使用したマシンは、PC9821V200SZD (MMX200MHz) + OSR2 です。30secのwaveファイルを作製し、エンコード開始のマウスクリックから、処理終了までの時間をストップウォッチで手動計測しました。よって誤差はけっこうありますが、これだけ差があるとあまり誤差の影響は考えなくて良いと思われます。

表1 エンコードプログラムと、エンコードに要する時間
Program version time(sec)
Xing MPEG Encoder 2.20 13
.mp3 producer 2.0 107
Blade's MP3 Encoder 0.51 207
mpeg Encorder 0.07a 390
速度的には、xingが圧倒的に速い。元のデータが30secであるのでおよそ倍速ということになる。CPUパワーが上がればこれよりさらに高速化されるであろうから、そのうち専用ハードウェア無しでリアルタイム圧縮しながらHDDレコーディングなんてことが可能になるのかもしれない。


Mpeg Layer3 Encorder の f特

なんと、おととい(5/9)に書いた内容の図が少し入れ替わってました。というわけで、内容が少し違ってますのでご注意下さいな。
 
 もう数ヶ月前になりますが、それまで使っていたmpeg encorderがあんまり遅いので、何かよいものはないかなぁと、xing のエンコーダーのデモ版(1分だけエンコードできるみたい)を使ってみたところ、めちゃめちゃ速かった。でおもわず、即購入したわけです。でもあとでわかったことですけど、このエンコーダー 16kHzから上の音はばっさり切ってしまってるんですね。まぁmpeg videoも作りたかったので、別に良いんですけど(^^;)

 というわけで、実際のところf特ってどうなっているのだろう?と調べてみました。方法はwhite noizeのwaveファイルをエンコードしてみて、その再生波形をfftで見るというだけです。まぁ実際の音楽は周波数成分がダイナミックに変化するのであくまで参考です。またf特以外にも歪やその他もろもろのファクターもありますから、これだけではエンコーダーの優劣の決め手にはなりませんけど...

 さてさっそく結果です。波形は 10kHzから22kHzをリニアで見てます。(対数より違いが見やすいので)



まずオリジナルですが、まんべんなく音が出てますね。
original



これに対して、Xing MPEG Encoder 2.20 は下のように見事に16kHzから上が出てないです。これはビットレートを上げても同じような結果でした。
xing 128kbps
xing 256kbps



次に、Fraunhofer's routinesを使った .mp3 Producere v2です。ビットレートが上昇すると高域が広がり、256kbpsでは21kHzあたりのもエンコードされてるようです。ビットレートによってカットオフ周波数を変えてるんでしょうか?どこかに仕様でも書いて有るんでしょうけどまだ調べてません。(^^;)

.mp3 Producere v2 128kbps
mp3 Producere v2 160kbps
mp3 Producere v2 192kbps
mp3 Producere v2 256kbps



最後に Blade's MP3 Encoderです。これのエンジンは based on the same ISO routines (mpegEnc for example)だそうでして、おそらくmpegEncでも同様な結果になるのでは思われます。mpegEncを使用しなかったのは単にこちらの方が速いという理由だけです。
128kbpsでも16kHzから上が出てることは出てるのですが、再生しながらfftを見てると、かなりムラがあります。160kbpsから上ではオリジナルと同じ22kHzまでまっすぐ出てるみたいです。

Blade's MP3 Encoder 128kbp
Blade's MP3 Encoder 160kbp
Blade's MP3 Encoder 256kbp
 


まとめ

 というわけで、ホワイトノイズで見る限り、128kbpsな速度だとより波形の複雑になる高域のエンコードはかなりしんどい?という印象だったのですけど、実際の音楽データだと、16kHzから上にはそれほど多くないはずなので、切り捨てて速度を稼ぐのもひとつの選択なのかしら?という感じです。まぁビットレートに余裕がある時には、高周波成分まで振り分けるのんが良いのでしょうね。18kHzのサインカーブをエンコードしてみましたが、xingは16kHzで切り捨てられるので絶対出てきません(^^;)
 ただ、やみくもに上まで延びてれば良いのかというとそうでもなくて、ハンドベルのアタックと余韻が交錯したような音源では、余韻の音がざわざわする感じが xing の方がましだったりというケースも有るので、最終的には、歪みや聴感も含めたバランスになってくるのでしょう。ただまともに音質のチェックやるためには、エンコード→デコード→CD-RでCDDA作製→まっとうなCDプレーヤーで試聴なんて手順が必要ですよね。ただ、128kbpsの場合はPCにヘッドホンつないで良く聴いてみると、エンコーダーにより違いがかなりはっきりわかりますので、どの音楽がどれに向いているか、なんて自分で調べてみることをお勧めします。とりあえず、私は128kbpsで使うときはxingかproducerあたりを使って、192や256な時はiso互換を使ってみようかと思ってます。