AACエンコーダの音質比較
カットオフ周波数に着目してAACエンコーダの音質を比較した。
qaac, NeroAAC, fdk-aac の音質は良好、ffmpeg aac, libfaac の音質はかなり悪い。
評価したエンコーダ
qaac Ver.2.68 (2018.11.20) LC(CVBR)
NeroAAC Ver.1.54 (2010.02.18) LC(VBR)
ffmpeg fdk-aac Ver.2.0.1 (2019.10.08) LC(CBR)
ffmpeg aac Ver.4.3 (2020.06.28) LC(CBR)
ffmpeg libfaac Ver.1.28 (2010.01.20) LC(CBR) (192kbpsはVBRに変わった max192kbps) libfaac.dll
カットオフ周波数の特性からエンコーダの性能が推測できる。
カットオフは15kHz程度は必要だがカットオフが高いと破綻しやすい。(音が荒れる、濁る)
カットオフの特性から推測したこと
・ffmpeg native aac の 64kbps のカットオフの低下が大きいのは破綻を避けるため。(libfaacも同様)
64kbps > 96kbps でカットオフも 1.5倍 なので 96kbps のカットオフも限界に近く音質は悪い。
・NeroAAC と fdk-aac の低ビットレートはカットオフ維持傾向なので64kbpsは限界に近く、96kbpsは余裕がある。(96kbpsの音質はそれなりに良い)
・qaac が 64kbps でカットオフを 12kHz まで下げているのは破綻しないことを優先した結果。
・fdk-aac のカットオフが低めなのはカットオフを必要以上に上げない方が音質に有利と判断した結果。
エンコーダによってカットオフの特性がかなり違う。カットオフと破綻しやすさはトレードオフなので落としどころが難しい。
評価は違いのわかりやすいボーカルのクリアさを重視して実施。 (低ビットレートで破綻している所を見つけて確認)
判定にはカットオフの特性からの推測を活用している。(試聴だけで判断するより確度が高い)
○と◎は判定が難しいが低いビットレートの結果から推測可能。(△は簡単にわかる)
カットオフの上昇よりビットレートの上昇の方が大きければ音質は良くなる、同程度なら音質はあまり良くならない。
qaac, NeroAAC, fdk-aac の 128kbpsは何れも良い音質である。192kbpsなら原音との違いがわからない。
ffmpeg は libfaac から native aac になってカットオフは上がっているが音質は悪く、高域成分が多い時に音が濁る。
native aac 96kbps でも子音を強く発声した時に音の濁りが目立つ。(変な残響のような音が発生)
音の濁りはビットレートを上げても完全には解消されない。
ffmpeg aacのエンコードコマンド
ffmpeg -i test.wav -y -c:a aac -b:a 128k aac128k.m4a
ffmpeg fdk-aacのエンコードコマンド
ffmpeg -i test.wav -y -c:a libfdk_aac -b:a 128k fdk128k.m4a
fdk-aac は配布禁止なのでコンパイルが必要。 やり方は こちら
ffmpeg aac と fdk-aac は -cutoff でカットオフ周波数の変更が可能。
NeroAACのエンコードコマンド
neroAacEnc -if test.wav -ignorelength -lc -br 128000 -of nero128k.m4a
カットオフの確認は Audacity と ffmpegライブラリ を使用。
NeroAAC 128kbps カットオフ 17.2kHz