音風景ブログ

目隠しテストによるエンコーダの音質評価などを行うブログです。

AACの音質比較

結果

AACの64kbpsでは、iTunes 10.0とNeroAACEncが良く(HE-AAC使用時)、現在実験段階となっているffmpeg内蔵のエンコーダ(cutoffオプション使用)は昔のLAMEの同ビットレートと同じくらい悪い。FAAC(libfaac)とffmpeg内蔵のエンコーダの音質(そのまま使用)はさらに悪い音質。

AACの96kbpsでは、iTunes 10.0が最良音質、次にNeroAACEncが良く、現在実験段階となっているffmpeg内蔵のエンコーダとFAAC(libfaac)の音質は悪い。CBRを利用した昔のLAMEと同程度の悪さである。

AACの128kbpsでは、iTunes 10.0が最良音質、NeroAACEncも互角、次にlibfaac、現在実験段階となっているffmpeg内蔵のエンコーダに-cutoff 17000オプションを追加したもので、2002年のLAME CBR 128kbpsと同じくらいの音質。最下位はffmpeg内蔵エンコーダをそのまま使った時の音質。

評価

エンコーダ LAME 3.92 ffmpeg内蔵 ffmpeg内蔵 libFAAC iTunes10.0 NeroAACEnc
↓音源 参考→ 2002年版 実験段階 -cutoff 11000 バイナリ配布不可 2010年版 2009年版
true my heart POPS 2 1.1 2 1.7 3.8 4.4
愛があれば大丈夫 POPS 2.4 1.5 2.1 1.9 2.6 2.7
27-カスタネット ソロ 2.4 1.7 1.8 1.7 2.5 2.6
拍手 applaud ライブ 2.2 2 2.3 1.8 3.2 3
fatboy テクノ 1.7 1.4 1.5 2.3 1.7 2.1
Tarentella 管楽器 2.1 1.8 2.1 2 3.3 3.2
水瀬さんち 男女声 2.2 2 2.1 1.7 3.1 2.8
Miles Davis ジャズ 2.3 1.5 2.2 1.6 3.7 3.5
58-ギター ソロ 2.2 1.9 2.2 1.9 3.1 3.2
55-Haydn 管楽器 2.2 2.5 2.5 2 4.5 3.8
↑音源 平均点 2.15 1.74 2.05 1.82 3.13 3.11
全サイズ 965KB 1040KB 966KB 934KB 965KB 942KB
エンコーダ LAME 3.92 ffmpeg内蔵 ffmpeg内蔵 libFAAC iTunes10.0 NeroAACEnc

注:数十人が参加した2011年4月の公開リスニングテストで、HE-AACはNeroよりもiTunesのほうが少々平均点が高いという結果が出ています。
http://listening-tests.hydrogenaud.io/igorc/results.html

エンコーダ LAME 3.92 ffmpeg内蔵 libFAAC iTunes10.0 NeroAACEnc
↓音源 参考→ 2002年版 実験段階 バイナリ配布不可 2010年版 2009年版
true my heart POPS 2.3 1.3 2.2 4 4.3
愛があれば大丈夫 POPS 2.3 1.7 2.2 3.7 2.8
27-カスタネット ソロ 2.3 1.7 2.2 3.3 2.8
拍手 applaud ライブ 2 2.2 2.2 3.1 2.5
fatboy テクノ 1.9 1.4 2.4 2.7 2.3
Tarentella 管楽器 2.2 2.4 2.3 3.9 2.4
水瀬さんち 男女声 2.4 2.3 2.2 4.1 2.6
Miles Davis ジャズ 2.4 2.1 2.2 4.1 3.5
58-ギター ソロ 2.5 2.6 2.3 4.3 3.4
55-Haydn 管楽器 2.1 2.6 2.4 5 3.6
↑音源 平均点 2.23 2.05 2.27 3.82 3.03
全サイズ 1.41MB 1.37MB 1.34MB 1.40MB 1.33MB
エンコーダ LAME 3.92 ffmpeg内蔵 libFAAC iTunes10.0 NeroAACEnc

注:数十人が参加した2011年7月の公開リスニングテストで、iTunes≒Fraunhofer IIS>Coding Technologies>Nero>>>ffmpeg内蔵という結果が出ています。
http://listening-tests.hydrogenaud.io/igorc/aac-96-a/results.html

エンコーダ LAME 3.92 ffmpeg内蔵 ffmpeg内蔵 libFAAC iTunes10.0 NeroAACEnc
↓音源 参考→ 2002年版 実験段階 -cutoff 17000 バイナリ配布不可 2010年版 2009年版
true my heart POPS 4.3 1.6 4.2 3.3 4.6 5
愛があれば大丈夫 POPS 3.2 2.5 3.1 3.2 3.8 3.3
27-カスタネット ソロ 2.5 2 1.9 2.7 4 3.3
拍手 applaud ライブ 2.3 2.6 2.8 2.6 3.3 3
fatboy テクノ 2 1.6 1.8 2.8 4.1 3.9
Tarentella 管楽器 2.7 2.5 3.4 3.1 4.2 2.9
水瀬さんち 男女声 3.5 2.6 2.6 2.9 3.8 4.2
Miles Davis ジャズ 2.6 2.3 3 3 4 3.7
58-ギター ソロ 3.6 2.6 2.4 3.6 4.7 3.8
55-Haydn 管楽器 2.7 3.2 3.3 4.5 5 5
↑音源 平均点 2.92 2.33 2.84 3.15 4.12 3.80
全サイズ 1.88MB 1.76MB 1.73MB 1.77MB 1.82MB 1.78MB
エンコーダ LAME 3.92 ffmpeg内蔵 ffmpeg内蔵 libFAAC iTunes10.0 NeroAACEnc


前回の比較で、AAC-LCの64kbpsではNeroの方が良く、128kbps以上ではiTunesの方が高音質であることがわかったが、平均的に見て、96kbpsではiTunesが勝っている。

テストに利用した音源を試聴したい方、ダウンロードしたい方、ログを見たい方はこちらへ。
http://zak.s206.xrea.com/bitratetest/main.htm
プラシーボ効果が入らないように、ABC/HR for Java 5.2を利用して、ランダムに並び替えてから、銘柄も圧縮/非圧縮の区別も伏せて採点した。1=音質劣化が非常に気になる 2=気になる 3=少し気になる 4=原音からの音質変化が分かるが、気にならない 5=音質変化がわからない、区別できない
64kbps,128kbpsは日時をおいて2回採点して、平均を取った(10×6×2=120回採点)。96kbpsは3回採点して平均を取った(10×5×3=150回)。

cutoffオプションについて

ffmpeg内蔵・現在実験段階(strict experimental)のAACエンコーダをffmpegで使うときには、-cutoffをつけると、少し音質が改善する。非可逆圧縮において、カットオフ周波数を下げると音がこもった感じになるが、代わりに良く聞こえる中域の音質が向上する。FAACは高域をカットしすぎて音がこもる傾向にあり、現在実験段階のffmpeg内蔵エンコーダは低・中域音の音が悪い。20kHz以上のヒトには聞こえない音域まで再現しようとしてビットを無駄に消費している。経験的に、14kHz以上の音はばっさり切ってもそんなに気にならず、16kHz以上の高域が含まれているかどうかは、ほぼ音質に無関係である。2011/01/16, 2012/01/26に実験したところ、

64kbps -cutoff 12000
80kbps -cutoff 14000
96kbps -cutoff 15000
128kbps -cutoff 16000
192kbps -cutoff 18000
256kbps -cutoff 20000

くらいがちょうど良い(詳しく)。ただし、このオプションをつけてもneroAACEncほど良くはならない。

ffmpeg -strict experimental -cutoff 15000 -acodec aac -ab 96k

とか

ffmpeg -strict experimental -cutoff 20000 -acodec aac -ab 256k

みたいな感じで使おう。

使用したオプション

携帯動画変換君のTranscoding.iniを書き換えて使います。coresフォルダにそれぞれのexeファイルを入れてから動作させてください。

[Item1]
Title=AllAACTest 64
TitleE=AllAACTest 64
Command0=""<%AppPath%>\cores\lame392" -b 64 "<%InputFile%>" "<%OutputFile%>cbr64k.mp3""
Command1=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -strict experimental -acodec aac -ab 64k "<%OutputFile%>ff64k.mp4""
Command2=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -strict experimental -cutoff 11000 -acodec aac -ab 64k "<%OutputFile%>ff64k11.mp4""
Command3=""<%AppPath%>\cores\ffmpeg18607" -y -i "<%InputFile%>" -acodec libfaac -ab 64k "<%OutputFile%>fa64k.mp4""
Command4=""<%AppPath%>\cores\qtaacenc" "<%InputFile%>" --abr 64 --he "<%OutputFile%>qh64k.m4a"
Command5=""<%AppPath%>\cores\neroAacEnc" -if "<%InputFile%>" -br 64000 -of "<%OutputFile%>nh64k.mp4""

[Item2]
Title=AllAACTest 96
TitleE=AllAACTest 96
Command0=""<%AppPath%>\cores\lame392" -b 96 "<%InputFile%>" "<%OutputFile%>cbr96k.mp3""
Command1=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -strict experimental -acodec aac -ab 96k -ac 2 "<%OutputFile%>ff96k.mp4""
Command2=""<%AppPath%>\cores\ffmpeg18607" -y -i "<%InputFile%>" -acodec libfaac -ab 96k -ac 2 "<%OutputFile%>fa96k.mp4""
Command3=""<%AppPath%>\cores\qtaacenc" "<%InputFile%>" --abr 96 "<%OutputFile%>qt96k.m4a"
Command4=""<%AppPath%>\cores\neroAacEnc" -if "<%InputFile%>" -lc -br 96000 -of "<%OutputFile%>ne96k.mp4""

[Item3]
Title=AllAACTest 128
TitleE=AllAACTest 128
Command0=""<%AppPath%>\cores\lame392" -b 128 "<%InputFile%>" "<%OutputFile%>cbr128k.mp3""
Command1=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -strict experimental -acodec aac -ab 128k "<%OutputFile%>ff128k.mp4""
Command2=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -strict experimental -cutoff 17000 -acodec aac -ab 128k "<%OutputFile%>ff128k17.mp4""
Command3=""<%AppPath%>\cores\ffmpeg18607" -y -i "<%InputFile%>" -acodec libfaac -ab 128k "<%OutputFile%>fa128k.mp4""
Command4=""<%AppPath%>\cores\qtaacenc" "<%InputFile%>" --abr 128 "<%OutputFile%>qt128k.m4a"
Command5=""<%AppPath%>\cores\neroAacEnc" -if "<%InputFile%>" -br 128000 -of "<%OutputFile%>ne128k.mp4""