広告 MP3、AAC音質関連

AACのサンプルレートの違いで、ビットレートと再生可能な上限周波数の関係がどうなるか?調べてみました。

スポンサーリンク

 

一般論としてAAC変換は、ビットレートを高くするとファイルサイズは大きなるものの、再生出来る上限周波数(Cut Off周波数)は高くなります。

一方、サンプルレートについて、例えばハイレゾ音源(ex. fs=192khz)からAAC変換する時にサンプルレートを 44.1khz よりも 48khz に高める方が再生出来る上限周波数が上がるのでしょうか? 

ハイレゾ音源をAAC変換する時にサンプルレートとビットレートの設定をどうすべきか?悩みますね。

そこで、今回はAACのサンプルレート周波数を一般的な44.1khzと48khzの2つに分けて、ビットレートを変えると AACの上限周波数がどう変化するかテストしてみました。

 

サンプルレートの違いによるビットレートと上限周波数のテスト結果とマトメ

テスト方法や条件は後述するとして、以前作成した2種類のAAC変換アプリ( XLD 及び Afconvert )を使ってPink-noiseのハイレゾ音源(192khz 24bit wav)をサンプルレートとビットレートを変えてAAC変換した時の上限周波数の測定結果を以下に示します。 

なお、2種類のアプリに限定したAAC変換テストですので、この結果はAAC変換の普遍的な特性を述べたものではないことに注意してください。 AACエンコーダやオプション指定等が違うとこの結果と合致しない場合があると思われます。

(グラフの簡単な説明)
後述する、Pink-noiseハイレゾ音源から夫々のビットレート毎にAAC変換したファイルの周波数特性(F特)グラフ(ここをクリックして移動)から横軸をビットレートで縦軸を上限周波数でプロットしたグラフです。

なお、このビットレートは、AAC変換を行った時に指定したビットレートです。(AACファイルをMediainfoアプリ等で調べたアクチャルなビットレートではありません)

サンプルレート(fs)の違によるビットレートと上限周波数

グリーンライン:fs=48khz ブルーライン:fs=44.1khz

 

テスト結果マトメ

今回のテストで、興味深い結果と思われたことを記します。

  1. 160kbps以下であれば、上限周波数は、サンプルレート(fs)に依存しせず、128kbps(fmax=17khz)、160kbps(fmax=18khz) になる。
  2. Afconvertの場合の上限周波数は、256kbps以下であれば、fsに依存しない。(XLDは256kbpsで僅差ながら上限周波数が低下)
  3. fsが44.1khzの場合、256kbps以上にビットレートを上げても、上限周波数は飽和して上がらない。 (この点を踏まえて「Apple Digital Masters」のAACはビットレートを256kbpsにしていると思われますね。)
  4. AAC変換で、CDフォーマットの上限周波数(ナイキスト周波数=22.05khz)以上にするためには、fsを48khzにして320kbpsにする必要がある。
  • CDフォーマット(ナイキスト周波数=22.05khz)の上限周波数を凌ぐためには、fsを48khzにして320kbpsにする必要がある。 320kbps・fs48khz (fmax > 22.05khz)
  • 256kbps以下のビットレートは、サンプルレートが44.1khzでも48khzでも殆ど上限周波数に差は生じない。 
    128kbps(fmax=17khz)、160kbps(fmax=18khz )、256kbps(fmax ≒ 21khz)

以上の振る舞いが何故生じるか?については、浅薄故に原理的な説明ができませんので、悪しからず (^_^;)

 

オペレータ
オペレータ
以上、今回のテスト結果とマトメでした。 ここからは、AAC変換のパラメータ設定及びテスト手順の説明になります。
〜〜
お使いのAAC変換アプリやAACエンコーダについて、上限周波数がどうなるか?調べたい時の参考にしてください。

 

「XLDコマンドライン組込Automatorアプリ」でテスト対象のAAC変換ファイルを作成する

「XLDコマンドライン組込Automatorアプリ」については、ここをクリック。

このアプリ概要は、ハイレゾ音源からAAC変換を行う際に高域減衰を防ぐため、AIFFフォーマットでAAC変換時のサンプルレート周波数になる様にダウンサンプリングします。 その後、ダウンサンプリングされたAIFFファイルを指定ビットレートでAAC変換を行っています。

 

サンプルレート、ビットレートを変える一例として、サンプルレート:48khz、ビットレート:320kbpsでAAC変換する時の設定方法を示します。


  • AIFFのサンプルレート指定

    blankXLDを起動して、環境設定から出力フォーマットをAIFFにして、オプションで以下のようにサンプルレート周波数を48khzに設定しOKを押す。


  • AACのビットレート指定

    blank環境設定から出力フォーマットをMPEG-4 AACにして、オプションで以下のようにビットレートを320kbpsに設定しOKを押す。


  • AAC変換の実行

    「XLDコマンドライン組込Automatorアプリ」を起動して、-20db Pink-noiseのハイレゾ音源(192khz 24bit wav)を選択すれば、サンプルレート:48khz、ビットレート:320kbpsでAACファイルが出力されます。

    -20db Pink-noiseのハイレゾ音源

    Pink-noise音源

    Down Load

    • -20db Pink-noiseのハイレゾ音源(192khz 24bit wav)は、WindowsソフトのWaveGeneで作成しました。
    • Down Loadボタンをクリックすると、Pink-noise音源がダウンロードできます。

以上の手順と同様に、-20db Pink-noiseのハイレゾ音源から、AACのサンプルレートを44.1khzと48khzの2つに分けて、ビットレート毎の(320kbps,256kbps,160kbps,128kbps)計 8個 のXLDによるAAC変換ファイルを作成しました。

(参考)ファイルサイズと圧縮率

blank

 

「Afconvertコマンドライン組込Automatorアプリ」でテスト対象のAAC変換ファイルを作成する

「Afconvertコマンドライン組込Automatorアプリ」については、ここをクリック。

このアプリ概要は、ハイレゾ音源からAAC変換を行う際に高域減衰を防ぐため、AIFFフォーマットでAAC変換時のサンプルレート周波数になる様にダウンサンプリングします。 その後、ダウンサンプリングされたAIFFファイルを指定ビットレートでAAC変換を行っています。

 

XLDと違い、Afconvertは、コマンドラインでサンプルレートやビットレートを直接指定できます。 ワークフロー中の「シェルスクリプトを実行」にあるコマンドラインのオプションを変更します。


  • AIFFのサンプルレート指定

     command
    #ハイレゾファイルを48khz にダウンサンプリング
    afconvert -d BEI24@48000 --quality 127 -r 127 --src-complexity bats -f AIFF "$f"
    

    上記コードの BEI24@ 以下の数字でサンプルレート周波数を指定します。 例えば、BEI24@44100 とすれば、サンプルレートが44.1khz になります。


  • AACのビットレート指定

     command
    #48khz aiffに変換されたファイルをafconvertでAACに変換
    afconvert -d aac -f m4af -q 127 -s 0 -u pgcm 2 -b 320000 "$f_aif"
    

    上記コードの -b 以下の数字でビットレートを指定します。 例えば、-b 160000 とすれば、ビットレートが160kbps になります。


  • AAC変換の実行

    上記の手順でコマンドラインのオプションを変更した「Afconvertコマンドライン組込Automatorアプリ」を保存した後このアプリを起動して、前述の-20db Pink-noiseのハイレゾ音源(192khz 24bit wav)を選択すれば、指定されたサンプルレートとビットレートでAACファイルが出力されます。


以上の手順と同様に、-20db Pink-noiseのハイレゾ音源から、AACのサンプルレートを44.1khzと48khzの2つに分けて、ビットレート毎の(320kbps,256kbps,160kbps,128kbps)計 8個 のAfconvertによるAAC変換ファイルを作成しました。

(参考)ファイルサイズと圧縮率

blank

 

AACファイルのCut Off周波数(=上限周波数)を求める

blank

AACファイルの上限周波数を簡単に調べるには、テスト対象のAACファイルをAudacityアプリにドロップして 解析 > スペクトル表示 を選択すればスペクトルが表示されます。

急峻に低下する周波数をカーソルで調べれば、アバウトながら上限周波数を調べられますが正確ではありません。

以下の手順で、AACファイルのCut Off周波数(=上限周波数)を求める方法をオススメします。

Cut Off周波数(=上限周波数)を求める簡単な流れ

  • -20db Pink-noiseのハイレゾ音源をAudacityにドロップして、解析 > スペクトル表示 > 書出しボタン を押すと周波数とレベル(db) データがテキストファイルとして書き出されます。 名前を仮に「Pink-noiseテキストファイル」とします。
  • テスト対象のAAC変換ファイルを-20db Pink-noiseのハイレゾ音源のサンプルレートに合わせるため「Audio to 192khz WAVE Droplets.app」(詳しくはここをクリック)にドロップして、AACファイルを192khzにアップサンプリングしたAAC変換wavファイルに変換します。
  • AAC変換wavファイルを、Audacityにドロップして、解析 > スペクトル表示 > 書出しボタン を押すと周波数とレベル(db) データがテキストファイルとして書き出されます。 名前を仮に「AACテキストファイル」とします。
  • 「Pink-noiseテキストファイル」を開き[周波数とレベル(db)]データ全てをコピーして、MacのNumbers(又はEXCEL)に貼り付けます。 同じ様に「AACテキストファイル」を開き[周波数とレベル(db)]データ全てをコピーして、MacのNumbers(又はEXCEL)に貼り付けます。
  • AACテキストファイルデータのレベル(db)からPink-noiseテキストファイルデータのレベル(db)引き算して絶対誤差を求めます。
  • 絶対誤差が-3dbになる周波数がCut Off周波数(=上限周波数)になるので、 -3dbを検索するために、Numbersの整理タブ をクリックして、 フィルター > フィルターの追加 から 検索したい を選び、ルールで 「数字」> 「数値以下」 で -2 と入力すると に -2 以下の数値のみ現れますので、-3 の値に対応する最も近い値を探し、対応する周波数がCut Off周波数(=上限周波数)です。
  • 必要なら、周波数と絶対誤差(周波数特性:F特)をグラフ化(散布図)します。

以上の手順で求めた夫々のビットレート毎のAACファイルの周波数特性(F特)と上限周波数(Cut Off周波数)を以下に示します。 

「XLDコマンドライン組込Automatorアプリ」の場合

サンプルレート:44.1kz

blank

サンプルレート:48kz

blank

 

「Afconvertコマンドライン組込Automatorアプリ」の場合

サンプルレート:44.1kz

blank

サンプルレート:48kz

blank

 

上限周波数グラフのマトメ

  • サンプルレートが44.1khzの場合、XLD、Afconvert 共、ビットレートが256kbpsと320kbpsのF特が一致、つまり上限周波数が同じになる。
  • ビットレートが128kbpsと160kbpsの場合、サンプルレート、AAC変換アプリの違いに関わらずF特が一致、つまり上限周波数が同じになる。
  • XLDアプリの場合、ビットレート256kbps以上で、サンプルレートが48khzの方が上限周波数が高くなる。
  • ビットレート256kbps以上で、Afconvertの方が僅かながら上限周波数が高くなる。

以上の結果から、「サンプルレートの違いによるビットレートと上限周波数」の関係をグラフにマトメた結果を参照(ここをクリックして移動)してください。

 

 

以上、サンプルレートの違いによるビットレートと上限周波数の関係を調べてみました。 中々興味深い振る舞いをすることが分かりました。 ハイレゾ音源をAAC変換する時のご参考にして頂ければと思います。

 

スポンサーリンク

 

スポンサーリンク

 

t