ご存知の様に、AACは不可逆圧縮ですので劣化が伴います。
前回記事で、劣化を調べる方法の一案である「Pink-noiseを使って絶対誤差から劣化量を求める方法」を使ってFFmpeg AACエンコーダ(2種類)の劣化量を調べた結果、劣化量がAACエンコーダの音質(再現性)を評価する上での一つの指標になり得ると考えられました。
そこで、過去に評価したAACエンコーダの7種類に対して劣化量(絶対誤差)を調べることにしました。
絶対誤差による劣化評価に当たって
変換前Pink-noiseファイルとAAC変換後ファイルのスペクトルから周波数に対する絶対誤差が不可逆圧縮による劣化と考えられます。 劣化が少なければ音の再現性が良い筈ですので、劣化を現すに当たって以下の3つの「要点」でAACエンコーダの劣化評価を行いました。
要点
1 絶対誤差グラフで劣化の可視化
Pink-noise(wav)とAACに変換されたファイル(m4a)の夫々のスペクトル(周波数 vs レベル)を調べ周波数に対する絶対誤差を求めます。 求めた絶対誤差から横軸を周波数、縦軸を絶対誤差にしたグラフ(散布図)を作成し劣化成分を可視化します。
グラフは、横軸を「リニア周波数表示」と周波数に対する絶対誤差の傾向が分かり易い横軸を「対数(log)周波数表示」の2通りでグラフ化します。
要点
2 劣化量の数値化
再生帯域内の絶対誤差のバラツキから統計データを求め劣化の数値化を行います。
- 求める劣化データの範囲:AACの絶対誤差データは、ビットレートに伴って上限周波数でカットされるので再生できる再生帯域が異なります。 このため、上限周波数以下の再生帯域をフィルタリングした絶対誤差データを対象とします。
- 劣化量の数値化(定義):再生帯域内の絶対誤差バラツキの標準編(σ)を調べて、3σのレンジ[(x+3σ)-(x-3σ)=2*3σ] を算出し、この値(3σレンジ)を劣化量と定義しました。 (3σレンジを劣化量と定義した意味は、絶対誤差は略正規分布しているので、3σレンジを求めれば、99.7%の確率で絶対誤差のバラツキが含まれると考えたからです)
要点
3 劣化量で分かること
Audacityで測定されたPink-noiseのスペクトルは測定時間内の周波数に対するピーク値を現しています。 AAC変換されたスペクトルとの絶対誤差は、ピーク値の乖離を示し乖離が少なければ劣化量が少なく再現性が高いということになります。 つまり、Pink-noiseで調べたAACの劣化量が少なければ、リアル音源の場合でも相関する筈で「音の強い成分の再現性が高くなる」ことが想定できます。 (これは、ビット深度が16bitに比較して量子化誤差の少ない静寂性に優れる24bit と相対している評価項目と言えますね。)
AACエンコーダ 劣化データ(INDEX)
2023/2/23 追記
今まで、絶対誤差ベースにしたdb単位の統計データ表を付記していましたが db単位のため限定的で分かり難く、下の式で示される絶対誤差率(%)を追加し併記しました。 また、統計データ表の「劣化量」に対しては「劣化率」と表記しました。
絶対誤差率は、要点1で測定した絶対誤差から、下の式で求めます。
絶対誤差率=絶対誤差 / 真値=【AACレベル絶対誤差】/【Pink-noise音源レベル】(%)
エンコード条件
-
AACエンコーダ(アプリ)の変換方法:「5つの視点」で再評価・ページ(ここをクリックして参照)で示されるコマンドライン及びオプション等に準じます。
-
ビットレート条件:「5つの視点」で評価した320kbps(Apple DIgital Masters Dropletの場合は256kbps) と、参考として160kbpsでテストを行いました。
統計データ | 320kbps | 160kbps |
統計データ範囲 | 0hz〜20khz | 0hz〜16khz |
x(平均) | -0.06db | -0.15db |
σ(stdevp) | 0.07db | 0.19db |
x+3σ | 0.15db | 0.42db |
x-3σ | -0.28db | -0.73db |
劣化量(2*3σ) | 0.43db | 1.16db |
劣化量・順位 | 5位 | 5位 |
max | 0.23db | 0.57db |
min | -0.43db | -0.99db |
レンジ | 0.66db | 1.56db |
file size(KB) | 213 | 102 |
絶対誤差率 % 統計データ | 320kbps | 160kbps |
統計データ範囲 | 0hz〜20khz | 0hz〜16khz |
x(平均) | 0.09% | 0.23% |
σ(stdevp) | 0.10% | 0.28% |
x+3σ | 0.40% | 1.06% |
x-3σ | -0.22% | -0.61% |
劣化率(2*3σ) | 0.61% | 1.68% |
劣化率・順位 | 5位 | 5位 |
max | 0.59% | 1.40% |
min | -0.33% | -0.80% |
レンジ | 0.92% | 2.21% |
file size(KB) | 213 | 102 |
統計データ | 320kbps | 160kbps |
統計データ範囲 | 0hz〜20khz | 0hz〜16khz |
x(平均) | -0.15db | -0.33db |
σ(stdevp) | 0.10db | 0.49db |
x+3σ | 0.14db | 1.15db |
x-3σ | -0.44db | -1.80db |
劣化量(2*3σ) | 0.59db | 2.95db |
劣化量・順位 | 6位 | 6位(worst) |
max | 0.23db | 1.09db |
min | -0.59db | -4.12db |
レンジ | 0.81db | 5.21db |
file size(KB) | 156 | 102 |
絶対誤差率 % 統計データ | 320kbps | 160kbps |
統計データ範囲 | 0hz〜20khz | 0hz〜16khz |
x(平均) | 0.22% | 0.47% |
σ(stdevp) | 0.14% | 0.70% |
x+3σ | 0.64% | 2.57% |
x-3σ | -0.20% | -1.62% |
劣化率(2*3σ) | 0.83% | 4.19% |
劣化率・順位 | 6位 | 6位(worst) |
max | 0.82% | 5.94% |
min | -0.34% | -1.52% |
レンジ | 1.16% | 7.46% |
file size(KB) | 156 | 102 |
FFmpeg libfdk_aac(16bit) 劣化データ
統計データ | 320kbps | 160kbps |
統計データ範囲 | 0hz〜19khz | 0hz〜16khz |
x(平均) | -0.07db | -0.12db |
σ(stdevp) | 0.04db | 0.08db |
x+3σ | 0.06db | 0.14db |
x-3σ | -0.20db | -0.37db |
劣化量(2*3σ) | 0.26db | 0.51db |
劣化量・順位 | 4位 | 1位(Best) |
max | 0.07db | 0.20db |
min | -0.24db | -0.48db |
レンジ | 0.31db | 0.68db |
file size(KB) | 205 | 106 |
絶対誤差率 % 統計データ | 320kbps | 160kbps |
統計データ範囲 | 0hz〜19khz | 0hz〜16khz |
x(平均) | 0.10% | 0.17% |
σ(stdevp) | 0.06% | 0.12% |
x+3σ | 0.29% | 0.54% |
x-3σ | -0.09% | -0.20% |
劣化率(2*3σ) | 0.37% | 0.74% |
劣化率・順位 | 4位 | 1位(Best) |
max | 0.34% | 0.68% |
min | -0.11% | -0.31% |
レンジ | 0.44% | 1.00% |
file size(KB) | 205 | 106 |
統計データ | 320kbps | 160kbps |
統計データ範囲 | 0hz〜20khz | 0hz〜16khz |
x(平均) | -0.04db | -0.12db |
σ(stdevp) | 0.04db | 0.13db |
x+3σ | 0.07db | 0.26db |
x-3σ | -0.15db | -0.49db |
劣化量(2*3σ) | 0.22db | 0.75db |
劣化量・順位 | 2位 | 4位 |
max | 0.09db | 0.33db |
min | -0.24db | -0.68db |
レンジ | 0.33db | 1.01db |
file size(KB) | 209 | 106 |
絶対誤差率 % 統計データ | 320kbps | 160kbps |
統計データ範囲 | 0hz〜20khz | 0hz〜16khz |
x(平均) | 0.06% | 0.18% |
σ(stdevp) | 0.05% | 0.18% |
x+3σ | 0.21% | 0.72% |
x-3σ | -0.09% | -0.37% |
劣化率(2*3σ) | 0.31% | 1.09% |
劣化率・順位 | 2位 | 4位 |
max | 0.33% | 0.96% |
min | -0.12% | -0.46% |
レンジ | 0.45% | 1.42% |
file size(KB) | 209 | 106 |
統計データ | 320kbps | 160kbps |
統計データ範囲 | 0hz〜20khz | 0hz〜16khz |
x(平均) | 0.04db | -0.12db |
σ(stdevp) | 0.03db | 0.13db |
x+3σ | 0.14db | 0.26db |
x-3σ | -0.05db | -0.49db |
劣化量(2*3σ) | 0.19db | 0.75db |
劣化量・順位 | 2位 | 3位 |
max | 0.09db | 0.33db |
min | -0.24db | -0.68db |
レンジ | 0.33db | 1.01db |
file size(KB) | 266 | 168 |
絶対誤差率 % 統計データ | 320kbps | 160kbps |
統計データ範囲 | 0hz〜20khz | 0hz〜16khz |
x(平均) | 0.06% | 0.18% |
σ(stdevp) | 0.05% | 0.18% |
x+3σ | 0.21% | 0.72% |
x-3σ | -0.09% | -0.37% |
劣化率(2*3σ) | 0.31% | 1.09% |
劣化率・順位 | 2位 | 3位 |
max | 0.33% | 0.96% |
min | -0.12% | -0.46% |
レンジ | 0.45% | 1.42% |
file size(KB) | 266 | 168 |
統計データ | 320kbps | 160kbps |
統計データ範囲 | 0hz〜20khz | 0hz〜16khz |
x(平均) | -0.04db | -0.11db |
σ(stdevp) | 0.03db | 0.12db |
x+3σ | 0.06db | 0.25db |
x-3σ | -0.15db | -0.47db |
劣化量(2*3σ) | 0.21db | 0.72db |
劣化量・順位 | 1位(Best) | 2位 |
max | 0.08db | 0.39db |
min | -0.20db | -0.64db |
レンジ | 0.28db | 1.03db |
file size(KB) | 205 | 106 |
絶対誤差率 % 統計データ | 320kbps | 160kbps |
統計データ範囲 | 0hz〜20khz | 0hz〜16khz |
x(平均) | 0.06% | 0.17% |
σ(stdevp) | 0.05% | 0.17% |
x+3σ | 0.21% | 0.69% |
x-3σ | -0.09% | -0.36% |
劣化率(2*3σ) | 0.29% | 1.04% |
劣化率・順位 | 1位(Best) | 2位 |
max | 0.28% | 0.92% |
min | -0.11% | -0.55% |
レンジ | 0.38% | 1.46% |
file size(KB) | 205 | 106 |
Apple DIgital Masters Droplet 劣化データ
統計データ | 255kbps | --- |
統計データ範囲 | 0hz〜20khz | --- |
x(平均) | -0.11db | --- |
σ(stdevp) | 0.14db | --- |
x+3σ | 0.31db | --- |
x-3σ | -0.53db | --- |
劣化量(2*3σ) | 0.84db | --- |
劣化量・順位 | 7位(Worst) | --- |
max | 0.42db | --- |
min | -0.83db | --- |
レンジ | 1.24db | --- |
file size(KB) | 155 | --- |
絶対誤差率 % 統計データ | 255kbps | --- |
統計データ範囲 | 0hz〜20khz | --- |
x(平均) | 0.16% | --- |
σ(stdevp) | 0.20% | --- |
x+3σ | 0.75% | --- |
x-3σ | -0.44% | --- |
劣化率(2*3σ) | 1.19% | --- |
劣化率・順位 | 7位(Worst) | --- |
max | 1.13% | --- |
min | -0.58% | --- |
レンジ | 1.71% | --- |
file size(KB) | 155 | --- |
劣化データの考察(マトメ)
- 7種類のAACエンコーダーで言えること、
- 1khz付近から高域に向かって徐々に劣化が増大し再生上限周波数で最大になる。(不可逆圧縮では人間の感覚に伝わりにくい高域部分の情報を減らしているための現れか?)
- ビットレートを下げると劣化量も増大する。
- 320kbpsで同点2位が XLDと Afconvert であった。 これは、XLD はAfconvertエンコーダを利用している左証と思われる。
- 320kbps(≒256kbps)では、
調べた7種類のエンコーダの劣化量が上限周波数(20khz付近)で 1 db 以下であったので、聴感上識別できないレベルと思われる。
劣化率で見ると、
0.5% 未満: libfdk_aac(16bit)、Afconvert、XLD、foober2k(Best)の4種類
0.5% 〜1%未満: iTnes、NativeAAC
1% を超える: Apple DIgital Masters(Worst) であった。 - 160kbpsでは、
上限周波数が低下し更に劣化量も増大する傾向なので、エンコーダによってはビットレートを考慮しないと聴感上で不利となる恐れがある。
劣化率で見ると、
1% 未満:libfdk_aac(16bit) (Best)
1% 〜2%未満:iTunes、Afconvert、XLD、foober2kの4種類
2% を超える: NativeAAC(Worst)は、4%を超えるので、ビットレートを256kbs以上で設定すべきと思われる。
劣化率を加味して「5つの視点」で評価した24bit対応AAC(アプリ)の総合評価が確認できます。
-
「5つの視点」で再評価。 ハイレゾ音源をAAC変換する24bit対応AACエンコーダ(アプリ)の評価ランキング
今迄、レコードからハイレゾ録音した音源をAACに変換する時に極力音質を劣化させず、CD音質を凌ぐにはどうしたら良いか?自分流で試してきた結果を投稿しました。 ただ、評価に統一性がないとこ ...