MP3(AAC)にエンコードできるフリーソフト(アプリ)は色々ありますがビット深度を明示的に指定できるものが殆ど無く、調べた中では唯一Windows版のfoober2000が指定できることが分かりました。 更に詳細にMP3(AAC)のエンコード・オプション指定もできます。
そこで、ハイレゾ音源をMP3(AAC)へエンコードする際にビット深度を16bitにした場合と24bitにした場合の量子化誤差(=歪率)がどうなるか調べてみました。
なお、Mac版もありますが、音楽再生機能のみでエンコード機能はありません。
Windows版・「foober2000」について
「foober2000」はウィキペディアによりますと、基本は高機能音楽再生ソフトですが、豊富なコンポーネントと自由な拡張を有していて、Converter(変換)部分を抜粋したのが以下になります。
ウィキペディアより引用ファイルをWAVまたは他形式のファイルにエンコードしたい場合に使用するコンポーネント。
デフォルトでは、FLAC、MP3、AAC(MP4)、Musepack、Ogg Vorbis、WavPack、Opusのエンコーダがプリセットに含まれており、MP3はLAME、AACはNero AAC Encoderを、他は純正のエンコーダを設定すると使用できる。またコマンドライン経由でプリセットに登録されている以外のエンコーダを使うことも可能であり、非常に柔軟なエンコードが可能である。設定ではエンコードしたファイルにディザリングをかけたり、DSPコンポーネントを指定することもできる。量子化ビット数(ビット深度)を指定することも可能であり、量子化ビット数は8bit、16bit、24bit、32bitが選択可能である。
以上の様に、Windows版・「foober2000」は、高機能音楽再生ソフトでありながら、MP3(AAC)へエンコードする際にビット深度を指定することも、CBRなどのオプションも詳細に指定できます。
なお、使用したWindows版・「foober2000」のバージョンはv1.5.1です。
「foober2000」のMP3(AAC)エンコード・オプション設定について
インストールや使い方、更にMP3用の「LAME」エンコーダ、AAC用の「Nero」エンコーダのセットアップはネットでググって頂くとして、ここでは、エンコード・オプション設定(コマンドラインエンコーダ設定)について説明します。
参考にさせて頂いた記事「foobar2000で音楽を MP3,AAC,FLAC,APE,TAK,TTA,ALAC へ変換させる方法」
MP3オプションを設定する手順
step
1MP3に変換する音源を選択
エンコードしたいプレイリストから対象の音源を選んで右クリックしてConvert>Quick convertをクリックすると以下の画面に遷移します。 MP3(LAME)を選んで「新規追加」をクリック
step
2エンコーダのプルダウンリストからcustomを選択
下の画面で、プルダウンリストからcustomを選択してOKをクリック
step
3MP3オプションを設定してみます。
ビットレート:160kbps
モード:CBR
Bit深度:24bit
- 赤枠のパラメータ(-S --noreplaygain -b 160 - %d)の意味は、bがCBRモードで、160が160kbpsになります。 また、例えば320にすれば、320kbpsになります。
- 最大ビット数を24にします。(8,16,24,32bitが明示的に選択できます)
- 表示の赤枠に適当な文言を記入します。
OKをクリックすると、Step1の先頭の画像に戻りますので、「変換」をクリックすると、先程、選択肢た音源が同じフォルダー内にビット深度24bit、CBR、160kbpsのMP3ファイルが出力されます。
AACオプションを設定する手順
手順は、前記Step1の画面で、AAC(Nero)を選んで「新規追加」をクリックします。 以降は、前記MPの手順と同じになります。 Step3の部分のみ抜き出して説明します。
AACオプションを設定
ビットレート:160kbps
モード:CBR
Bit深度:24bit
- 赤枠のパラメータ(-cbr 160000 -ignorelength -if - -of %d)の意味は、-cbrがCBRモードで、160000が160kbpsになります。 また、例えば320000にすれば、320kbpsになります。
- 最大ビット数を24にします。(8,16,24,32bitが明示的に選択できます)
- 表示の赤枠に適当な文言を記入します。
OKをクリックすると、MP3オプション設定手順のStep1の先頭の画像に戻りますので、「変換」をクリックすると、先程、選択肢た音源が同じフォルダー内にビット深度24bit、CBR、160kbpsのAACファイルが出力されます。
注意ポイント
AAC(Nero)は、AACに変換できる対象ファイルはサンプリング周波数が96khz迄です。 例えば、サンプリング周波数が192khzのwavフォーマットファイルをAACに変換しようとするとエラーになります。
ビット深度を変えてエンコードしたMP3及びAACの歪率を測定してみます
以前の記事「CDのここがダメ」で行った歪率測定と同じ方法です。
歪率測定(THD+N)手順
step
1ハイレゾファイルの作成
WaveGeneで1khz sin波を( 0db、-48db、-60db、-90db )の4種類でWavフォーマット(24bit 44.1khz) のテスト用ハイレゾファイルを作成します。
作成したテスト用ハイレゾファイル(1khz sin波)諸元
記録レベル | フォーマット | デスク上の サイズ | 歪率 (THD+N) | 波形(正規化:-3dbに増幅後) |
0dbFS | 24bit 44.1khz Wav | 1,323KB | 0.00001% | |
-48dbFS | 0.00151% | |||
-60dbFS | 0.00573% | |||
-90dbFS | 0.18372% |
歪率(THD+N)の測定は、WindowsソフトのWaveGeneの姉妹ソフトであるWaveSpectraを使用させて頂いて測定しました。
step
2foober2000でビット深度を変えたMP3とAACへ変換
夫々4種類のテスト用ハイレゾファイルをfoober2000に取り込み、以下のエンコードオプション条件でMP3(AAC)ファイルに変換します。
エンコードオプション条件
ビット深度指定 | モード | ビットレート | |
MP3 | 16bit | CBR | 320kbps |
24bit | |||
AAC | 16bit | CBR | 320kbps |
24bit |
step
3MP3とAACの歪率を測定
歪率を測定するために、Wavファイル形式のみに対応しているWaveSpectraを使いますのでMP3(AAC)をWavファイルに変換する必要があります。 MP3及びAACのエンコードファイルをfoober2000でWavフォーマット(24bit 44.1khz)に変換しWaveSpectraで歪率(THD+N)を測定しました。
MP3(CBR 320kbps):ビット深度を変えてエンコードした結果
|
ポイント
- ビット深度を16bitでエンコードした場合、CDフォーマット(16bit,44.1khz)の歪率(点線グラフ)と略同じでした。 また、-90dbFSの波形は階段状になり量子化ノイズが増加していることが分かります。
- ビット深度を24bitでエンコードした場合、16bitに比べ弱音部では格段に歪率が少なく、-50dbFS付近からハイレゾフォーマット(24bit,44.1khz)の歪率(点線グラフ)と略同じになっています。 つまり、弱音に対してメリットがありますね。
- MP3(CBR 320kbs)のファイルサイズは、ビット深度を16bitにしても24bitにしても同じで、203KB(圧縮率:15.3%)でした。
AAC(CBR 320kbps):ビット深度を変えてエンコードした結果
ポイント
- ビット深度を16bitでエンコードした場合、CDフォーマット(16bit,44.1khz)の歪率(点線グラフ)と略同じでした。 また、-90dbFSの波形は階段状になり量子化ノイズが増加していることが分かります。(MP3の波形より形状が崩れている)
- ビット深度を24bitでエンコードした場合、16bitに比べ弱音部では格段に歪率が少なく、-60dbFS付近(MP3では-50dbFS)からハイレゾフォーマット(24bit,44.1khz)の歪率(点線グラフ)と略同じになっています。 つまり、弱音に対してメリットがありますね。
- MP3(CBR 320kbs)のファイルサイズは、ビット深度を16bitにしても24bitにしても同じで、205KB(圧縮率:15.5%)でした。(MP3の時は、203KBでしたので、僅かにサイズが増加)
結果から分かること(マトメ)
ビット深度が24bitでMP3(又はAAC)にエンコードした場合、-50dbFS付近以下から、ハイレゾと同等の歪率になること。
ビット深度が16bitでMP3(又はAAC)にエンコードした場合、CDフォーマットと同レベルで歪率が推移すること。 また、ビット深度が24bitと比較して、-30dbFS付近から桁違いに歪率の差が生じる(悪化する)こと。
MP3(又はAAC)にエンコードしたファイルサイズは16bitも24bitも殆ど差が無いこと。
結論と考察
- ビット深度の指定に関わらずエンコードしたファイルサイズが変わらないので、歪率が有利になるビット深度指定を24bitでエンコードするのが望ましいのでは無いかと思います。
- ウィキペディアの説明によれば、「MP3やAACといった非可逆圧縮のPCM音声ではビット深度の概念はない。」と言われています。 しかし今回の実験で分かったことは、foober2000において、MP3(又はAAC)でエンコードする際には、出来るだけハイビットで設定してファイルを書き出す方が量子化ノイズ(=歪率)的に有利であることが分かりました。 つまり、ウィキペディアの説明に対して、「MP3(AAC)に一旦変換してしまうとビット深度の概念は無い」と言うことでは無いでしょうか?
- ビット深度が選択できないMP3(又はAAC)変換ソフトを使用する場合、ハイレゾ(1khz sin波 -90dbFS)のテストファイルを使ってエンコードして、そのファイルをAudacity等に取り込んで正規化(増幅)してエンコード波形が階段状になればビット深度が16bitで、また波形が正弦波であればビット深度が24bitであることが推察できます。 つまり、試薬として、テストファイルを使って見極めるのも一つの手段になるのでは無いかかと思いました。
この結果を踏まえてハイレゾ音源からMP3(AAC)にエンコードする時の問題点を改めて整理していきたいと思います。
参考:ハイレゾ音質を極力低下させないAAC(MP3)変換を行うために
折角のハイレゾ音を極力 音質を落とさない様にAAC(又はMP3)に変換する時のヒントを示した記事です。
続けてこちらの記事をご覧ください。
-
ハイレゾ音源をAAC(MP3)に変換する時の「5つのヒント」
ハイレゾ音源を出来るだけ音質を落とさない様にAAC(又はMP3)変換するためのヒント(手掛かり)です。 出来れば、変換されたサウンドがCDを凌ぐ様な音質にできればと、今まで当ブログで実験やデータ評価を ...