2015/07/23

AudacityでMP3ファイルを保存

うちにある携帯オーディオプレーヤーの多くはMP3しか再生できない。個人的にはフリーで高音質な Ogg Vorbis が好きなのだが、PCでしか使えないフォーマットでは汎用性がなさすぎる。 1993年に開発されたデファクトスタンダードであるMP3には勝てそうもないので、諦めてMP3を使うしかないのが現状。

個人的にMP3を作成する際には、Audacityを使ってエンコードしている。 主にビットレートは128、192kbpsを使っていたが、改めて各種設定のメリット、デメリットなども含めて検証してみようかと思う。


LAME(レイム)

Audacityでは、音質がよいMP3エンコーダーといわれている LAME を使ってエンコードする。現在のバージョンは3.99.3。

ビットレート

圧縮音源の圧縮目安としてよく使われるbpsはビット毎秒のことで、1秒間に何ビットデータを転送したかを表す。 たとえばCDの音は、サンプリング周波数44100Hz、16bit、ステレオ(2ch)なので、
44100 x 16 x 2 =
1411.2kbps となる。
MP3で固定320kbpsといえば、転送量は 1/4.41なので、ファイルサイズは大体比例することになる。主なビットレートとCD(wav)の容量はおよそ以下のような関係になる。
320kbps size 1/4.41
192kbps size 1/7.35
128kbps size 1/11.025
64kbps size 1/22.05

MP3の圧縮方法は聴こえにくい高音域をばっさり切ることで、データ量を減らしている。 ビットレートによって、以下のように削る周波数が違ってくるが、ステレオとモノラルではビットレートが2倍違うので、注意が必要。同じビットレートならばモノラルは、はるかに音がよい。

下はホワイトノイズをサンプリング周波数44100Hz、16bit、stereoで作成したものを、代表的なビットレートごとに周波数スペクトルで見たもの。

まずはオリジナルの周波数スペクトル。ナイキスト周波数の22050Hzまで信号がある。

波形はキレイに整っている。


8kbps これはサンプリング周波数が強制的に24000Hzになった。2000Hz以上の信号はばっさり切られている。

波形は上の周波数がばっさり切られているので、ほとんどなくなってしまった。


32kbps 約5000Hz以上の信号が切られている。それ以下の周波数もかなり落ちている。

波形はホワイトノイズぽさが出てきたが、ほど遠い。


64kbps 約11000Hz以上の信号が切られている。それ以下も周波数も落ちている。

オリジナル波形に比べるとかなりギザギザなのがわかる。


96kbps 約15000Hz以上の信号が切られているが、それ以下の周波数も落ちている。

波形はだいぶホワイトノイズぽくなってきたが、レベルがオリジナルよりもかなり高い。


128kbps 約16500Hz以上の信号が切られている。それ以下の周波数は割とオリジナルを維持しているように見える。この辺の周波数より上は聞こえない人も多いのだが、音色としては何か違って聴こえるもの。実際の曲を圧縮するとシンバルなどの高音域での違和感や不自然さを感じてしまう。

波形を見ると、オリジナルよりもレベルが上がっている部分が見受けられ、暴れているという印象。


192kbps 18500Hz以上の信号が切られている。これぐらいまで記録されていると、ほとんど問題なくなる。LAMEの推奨ビットレートも192kbps以上なので、このビットレートから違和感を感じにくいということなのだろう。

波形は落ち着いてきた感じだが、レベルは全体的に高い。


320kbps MP3の最高品質の320kbpsは20000Hz以上の信号が切られている。一般的に人が聞こえる周波数の上限は20000Hzと言われているので、ここまで記録されていれば、違いも判らないということだろう。オリジナルWAVとの差も感じられない。

最高品質でもオリジナル波形には戻らない。それでもかなり近くはなったかな。レベルの高さも多少落ち着いている。視覚的にはオリジナルとはまるで違うが、聴いた限りでは差がわからない。人間の耳って信用できない。



サンプリング周波数

Audacityではトラックのサンプリング周波数に従う。音楽ファイルならCDと同じ44100Hzが汎用性もあり適当。とくにCDからのリッピングなら、そのままが一番よいはず。
MP3が扱うサンプリング周波数は以下のようになっている。上限は48kHz。
32kHz、44.1kHz、48kHz(MPEG-1 Audio Layer-3)
16kHz、22.05kHz、24kHz(MPEG-2 Audio Layer-3)
8kHz、11.025kHz、12kHz(MPEG-2.5 Audio Layer-3)


量子化ビット数

MP3は16ビットが上限のようだ。何も迷わず16bitを使う。Audacityでは24bitだろうが、32bit floatだろうが、勝手に変換されるようだ。


Bit Rate Mode

MP3にはいくつかのビットレートモードが選択できる。どれがよいかは音源によっても差があるようなので、難しいところ。
  • Preset(lame独自)
    LAMEの独自の設定のようだが、下の VRB と CRB の中からセレクトしただけのようだ。

    4つのQualityから選択する。Insane 320kbps は CBR 320bps と同等のようだ。他はVBRの中の設定と同じ。

    Variable Speed はFastとStandardのどちらかを選ぶ。


  • Variable(VBR 可変ビットレート)
    ビットレートがサンプルごとに変化するモード。音の情報に応じて変化するために、同じビットレートであれば、固定ビットレートよりも音質的に有利になる。128kbps以下では明らかな差を感じる。ビットレートが低ければ低いほどVBRを使うべきだろう。

    ビットレートが変化するので、0~9のQualityで指定する。

    Variable Speed はFastとStandardのどちらかを選ぶ。


  • Average(ABR 平均ビットレート)
    可変ビットレートと固定ビットレートのいいところを採用したモード。圧縮率の計算がしやすく、可変ビットレートのようになるべく高音質になる。なんか中途半端なイメージを受けてしまう。

    8~320kbpsから選択する


  • Constant(CBR 固定ビットレート)
    常時一定のビットレートで処理する。高ビットレートになれば有利になるようだ。確認すると128kbpsではVBRの方が自然だったが、192kbps以上では差はわからなかった。

    8~320kbpsから選択する。



  • Joint Stereo か Stereo

    2チャンネルの圧縮の場合、Simple Stereo と Mid Side Stereo という処理がある。
    Simple Stereo は左右チャンネルを独立して処理する普通のステレオ。
    Mid Side Stereo は中央(Mid)の音とサイド(Side)の音にわけて処理することで圧縮率を上げている。
    Mid = L+R
    Side = L-R
    復元方法は
    L = 1/2(Mid + Side)
    R = 1/2(Mid - Side)
    同じビットレートならば、Simple Stereoよりも音がよくなる仕組み。理論的には元通りに戻るが、実際には無視できる程度の誤差は付き物。あと圧縮処理によって定位は微妙に変化する可能性がある。
    Joint Stereo は、Simple Stereo と Mid Side Stereo を組み合わせて、処理ごとに有利な方を採用する仕組み。128kbpsで試してみると、明らかにJoint Stereo の方が高音質だが、192kbps以上では差はよく分からない。


    音は遅れる

    圧縮処理で使うFFTの関係だと思われるが、サンプリング周波数44100HzステレオをMP3に変換すると、はじめに無音部分が51.2msec追加された。サンプル数では2258sample。その分時間が長くなる。 Ogg Vorbis は1サンプルもズレないのに、Audacityでエンコードする限り MP3、AACはズレまくり。



    個人的な設定

    CDからの取り込んだ音楽ファイルであれば、やはりそれなりの音質を保ちたいので、192kbps以上は欲しい。 いろいろなプレーヤーで問題なく再生するには、なるべく汎用的な固定ビットレートで、ややこしい処理がない方が安全。 そうなると以下の設定が無難かな。

    サンプリング周波数:44100Hz
    量子化ビット数:16bit
    Bit Rate Mode:Constant CBR 固定ビットレート
    bit Rate:192kbps 音質を最優先したい場合は 320kbps
    Channel Mode:Stereo

    という設定に落ち着く。メモリも安価になり、ネット環境も高速になった現在は、ファイルサイズの圧縮率を上げることに、それほど躍起にならなくてもよいと思う。多くの場合、無圧縮WAVの1/7~1/4程度の容量になれば十分でしょう。MP3の多くの設定は、高圧縮の際に少しでも音をよくしたいということで開発されたものなので、低圧縮であれば、ややこしい設定をせずにシンプルな設定にした方が、どんな環境でも確実に再生してくるのでよいと思う。