AAC(MP3 )変換は、高域部分の周波数特性(F特)が色々な要素条件でバラツキます。 上のF特グラフで示す様に、エンコーダの要素やハイレゾ音源からAAC(MP3)に変換する場合などでバラツキ、再生できる上限周波数(Cut-Off周波数)に違いが生じます。 そのため、AAC(MP3 )へ変換する前に予め周波数特性(F特)を知っておくのがベターと思います。
備考:Cut-Off周波数とは、周波数特性(F特)上の通過域から3dB減衰した点の周波数のことで、再生できる上限周波数を示します。そこでスィープ信号(音源)を使って高域部分に特化したF特を描画(グラフ化)する方法を考えてみました。 今迄ピンクノイズを使ってF特を描画していましたが、この方法ではノイジーなF特グラフになってしまいます。 今回のスイープ信号で描画する方法で、綺麗な周波数特性が描画でき、Cut-Off周波数も正確に特定できます。
用意するツール(アプリ)
- WaveGene:
efuさんが開発したWaveGeneを使い、評価するスィープ音源を生成します。 (Step1を参照)
- Audacity:
基準音源とAAC(MP3)に変換した評価音源を取込み、夫々を周波数分析(データ書出し)します。(Step2を参照) - 表計算ソフト:
周波数分析データをNumbersやExcel などの表計算ソフトで基準音源データとAAC(MP3)データの絶対誤差(差分)からF特グラフ(散布図)を描画します。(Step3を参照)
F特グラフ(散布図)の描画手順
Step1 Sweep音源作成(WaveGene)
Sweep音源の作成方法
例えば、[15khz〜24khz 20秒間 -20db 24bit 48khz]Sweep音源をWaveGeneで作成するには、コントロール画面で示される様に設定します。
この設定で「Waveファイルへ出力」ボタンを押すと、「15khzから24khzまで20秒間のスィープ信号が-20db 24bit」サンプルレート 48khzのwavファイルが出力されます。
作成するSweep音源は2つ必要です。 AAC(MP3)のF特を評価する「評価Sweep音源」と絶対誤差を計算する時の基準となる「基準Sweep音源」を用意しますが、夫々のSweep音源は評価するAAC(MP3)のサンプルレート(fs)で仕様が異なります。 Sweep音源の作成は以下の仕様によります。
Sweep音源の仕様についてSweep音源の仕様
AAC(MP3)のサンプルレートが48khzの場合
Sweep音源仕様(項目) 評価Sweep音源 基準Sweep音源 Sweep 周波数 15khz〜24khz 15khzから24khz サンプルレート fs 48khz以上の評価したい fs に設定 48khz Sweep 時間 20秒 AAC(MP3)のサンプルレートが44.1khzの場合
Sweep音源仕様(項目) 評価Sweep音源 基準Sweep音源 Sweep 周波数 15khz〜22.05khz 15khzから22.05khz サンプルレート fs 44.1khz以上の評価したい fs に設定 44.1khz Sweep 時間 20秒 例えば、サンプルレート(192khz)のハイレゾ音源から48khzのAAC(MP3)に変換した時のF特を描画する場合は、以下の2つのSweep音源を作成します。
- 48khz 基準Sweep音源:[15khz〜24khz 20秒間 -20db 24bit 48khz]wav
- 192khz評価Sweep音源:[15khz〜24khz 20秒間 -20db 24bit 192khz]wav
次のStep2で説明する周波数分析(FFT)は、処理時間が必要で周波数の変化が早いと上手く周波数分析が出来ません。 そのため、Sweepする周波数範囲を狭く、Sweepもゆっくり変化させることが必要です。 この点を考慮して、周波数の最大値は、AAC(MP3)のナイキスト周波数(fs/2)にし、周波数の最小値はビットレート128kbpsの遮断周波数が17khz付近になることから15khにSweep範囲を限定し、Sweep時間は20秒と遅速させています。Step2 周波数分析(Audacity)
サンプルレート(192khz)のハイレゾ音源から48khzのAAC(MP3)に変換した時のF特を描画する場合を例に説明します。
分析
1 基準Sweep音源の周波数分析Audacityに48khz 基準Sweep音源をドラッグアンドドロップして取り込みます。 このトラックを全選択して、解析 > スペクトル表示 を選択すると周波数解析画面でスペクトラムが表示されるので、サイズを[2048]、関数を[ハン窓]にして、「書出し 」ボタンを押して、テキスト・ファイル名を「48khz 基準Sweep音源.txt」等にして分析データを保存します。 このtextデータは後のStep3で述べる、【周波数】と絶対誤差を計算する時の【基準レベル】に使います。
分析
2 AAC(MP3)の周波数分析192khz評価Sweep音源をAAC(MP3)[fs=48khz]に変換します。 変換されたAAC(MP3)ファイルをAudacityにドラッグアンドドロップして取り込みます。 ここで重要な点は、下で示す様に、先程の48khz 基準Sweep音源の先頭位置のサンプリング・ドットに合わせ込むためにトリミング(削除)することです。 このため、縦軸は拡大し見易くして時間軸をズームして下の様にトリミングします。
トリミングして先頭位置を合わせ込んだ後、このトラックを全選択して、解析 > スペクトル表示 を選択すると周波数解析画面でスペクトラムが表示されるので、サイズを[2048]、関数を[ハン窓]にして、「書出し 」ボタンを押してテキスト・ファイル名を「48khz AAC(MP3)Sweep音源.text」等にして分析データを保存します。
備考:サイズ[2048]
サイズ(N)は周波数分解能(Δf )に関係し、大きくすると精度が上がります。 周波数分解能(Δf )は Δf =fs/N で現せます。 このサイズ(N)を大きくすると解析精度は上がりますが、Sweepによる変動に追従出来難くなります。 試行錯誤して、サイズを[2048]に決めました。 fsが48khzの場合、周波数分解能(Δf )は、23.4375hzになります。 また、fsが44.1khzの場合、周波数分解能(Δf )は、21.5332hzになります。Step3 グラフ化(Numbers)
ここから、macOSの表計算ソフト・Numbers の説明になります。 Windowsの Excel でも同等と思います。
手順
1 Numbersの準備表計算ソフトのNumbersを起動して、新規のテンプレート「空白」を選びます。 初期のシートは左のセルが灰色になってヘッダー行になっているのでこの列を削除しておきます。
また、予めデータ・フォーマットで周波数(Hz)に関するセルの単位をhzに、レベル(db)に関するセルの単位をdbに設定しておくと良いです。
手順
2 分析データの貼付けと加工- Step2で求めた「48khz 基準Sweep音源.txt」をテキストエディトで開き、データを全コピーして、Numbersの(A1)セルを選択し右クリックして「ペースト」を実行
- A列に「周波数(Hz)」データとB列に「レベル(db)」データが、1024行分のデータが貼り付けられる筈です。 わかり易くするために、(B1)セルの【レベル(db)】名を【基準レベル】に書換えます。
- Step2で求めた「48khz AAC(MP3)Sweep音源.text」を同じ様に(C1)セルに貼り付けます。 【周波数(Hz)】列が重複しますので、この列を削除した後、(D1)セル【レベル(db)】名を【変換レベル】にします。 この後、D列全部を、C列に移動。
- 基準レベルと変換レベレの絶対誤差を求めるため、(D2)に計算式「C2-B2」を記述します。 (D2)セルをコピーして、D列全体を選択した後、ペーストしますと、D列全体に計算式がペーストされます。 (D1)セルを【絶対誤差】名にします。
以上で、F特グラフを描画する準備ができました。
手順
3 周波数特性(F特)のグラフ化周波数(A列)を横軸に絶対誤差(D列)を横軸にしたグラフが周波数特性(F特)になります。 そこで、A列とD列のみを選択するために、CMDボタンを押ながらA列とD列を選択した後、Numbers「グラフ」中の「2D 散布図」を選びますとX軸が【周波数】でY軸が【絶対誤差のレベル】としたグラフが一瞬で描画されます。
但し、真値が15khz〜24khzのSweep信号以外の不定部分が含まれたグラフですので、F特グラフにするには、適正な軸目盛りを設定する必要があります。
Sweep音源が15khz〜24khzですので、描画されたX軸の軸目盛りの最大値を24000に最小値を15000にします。
Y軸の軸目盛りの最大値を 1 にして、最小値は -10 にすると、F特グラフは、X軸 15khz〜24khz Y軸 1db〜-10db の範囲の周波数特性グラフが描画できます。
後は、適宜グリッドラインやメジャー等を調整すればF特グラフの完成です。
スポンサーリンク
AAC(MP3)の周波数特性(F特)描画(事例)
ハイレゾの「192khz評価Sweep音源」をAAC(MP3)に変換した時の周波数特性(F特)を示します。
ミュージック(iTunes)アプリのF特
AAC変換とMP3変換で、F特が随分違うのが分かります。 MP3のF特がブロードになっています。 これは、192khzから48khzにダウンサンプリングする時のデシメーション・フィルターの特性の問題ですので、一度デシメーション・フィルターの特性が良いAIFFでハイレゾ192khz音源を48khzにダウンサンプリングした後、MP3に変換すると改善される可能性があります。
使用したSweep音源
48khz 基準Sweep音源:[15khz〜24khz 20秒間 -20db 24bit 48khz]wav
192khz評価Sweep音源:[15khz〜24khz 20秒間 -20db 24bit 192khz]wav
XLDアプリのF特
ハイレゾ音源を直接XLDアプリでAAC変換したもの(brownライン)とハイレゾ音源をAIIFで48khzにダウンサンプリングした後、AAC変換したもの(greenライン)のF特です。 ハイレゾ192khz音源をAIFF経由して48khzに落としてからAAC変換するとCut-Off周波数が改善されていることが分かります。
使用したSweep音源
48khz 基準Sweep音源:[15khz〜24khz 20秒間 -20db 24bit 48khz]wav
192khz評価Sweep音源:[15khz〜24khz 20秒間 -20db 24bit 192khz]wav
FFmpeg Native-AACのF特
ハイレゾ音源をNative-AACエンコーダでAAC変換し、ビットレートを変えた時のF特です。 夫々のビットレートの遮断周波数特性が分かります。 256kbps以下のビットレートの遮断特性が非常に急峻であることが分かります。 また、当然ですが、夫々の遮断特性は、320kbpsの特性に沿っています。
使用したSweep音源
48khz 基準Sweep音源:[15khz〜24khz 20秒間 -20db 24bit 48khz]wav
192khz評価Sweep音源:[15khz〜24khz 20秒間 -20db 24bit 192khz]wav
Apple DIgital Masters DropletのF特
Apple DIgital Masters Dropletツールの仕様はハイレゾ96khz音源からApple DIgital Mastersと同等の44.1khz・256kbpsのAACに変換するというものです。 合わせて同じ条件でAIFFでダウンサンプリングして44.1khz・256kbpsのAACに変換したXLDアプリのF特を調べました。 このF特から、Apple DIgital Masters Dropletの方が、遮断特性が優れていることが分かります。
使用したSweep音源
44.1khz基準Sweep音源:[15khz〜22.05khz 20秒間 -20db 24bit 44.1khz]wav
192khz 評価Sweep音源:[15khz〜22.05khz 20秒間 -20db 24bit 192khz]wav
以上、スィープ音源でAAC(MP3)の再生高域部分の周波数特性をグラフ化する方法の紹介でした。 F特を描画するのは、少々面倒ですが、一度お使いのAAC(MP3)変換アプリのF特を調べて見ることをオススメします。