音風景ブログ RSSフィード

2011-01-01

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内蔵エンコーダをそのまま使った時の音質。

評価

f:id:kamedo2:20110208231202p:image

エンコーダLAME 3.92ffmpeg内蔵ffmpeg内蔵libFAACiTunes10.0NeroAACEnc
↓音源参考→2002年版実験段階-cutoff 11000バイナリ配布不可2010年版2009年版
true my heartPOPS21.121.73.84.4
愛があれば大丈夫POPS2.41.52.11.92.62.7
27-カスタネットソロ2.41.71.81.72.52.6
拍手 applaudライブ2.222.31.83.23
fatboyテクノ1.71.41.52.31.72.1
Tarentella管楽器2.11.82.123.33.2
水瀬さんち男女声2.222.11.73.12.8
Miles Davisジャズ2.31.52.21.63.73.5
58-ギターソロ2.21.92.21.93.13.2
55-Haydn管楽器2.22.52.524.53.8
↑音源平均点2.151.742.051.823.133.11
全サイズ965KB1040KB966KB934KB965KB942KB
エンコーダLAME 3.92ffmpeg内蔵ffmpeg内蔵libFAACiTunes10.0NeroAACEnc

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

http://listening-tests.hydrogenaud.io/igorc/results.html

f:id:kamedo2:20110209115954p:image

エンコーダLAME 3.92ffmpeg内蔵libFAACiTunes10.0NeroAACEnc
↓音源参考→2002年版実験段階バイナリ配布不可2010年版2009年版
true my heartPOPS2.31.32.244.3
愛があれば大丈夫POPS2.31.72.23.72.8
27-カスタネットソロ2.31.72.23.32.8
拍手 applaudライブ22.22.23.12.5
fatboyテクノ1.91.42.42.72.3
Tarentella管楽器2.22.42.33.92.4
水瀬さんち男女声2.42.32.24.12.6
Miles Davisジャズ2.42.12.24.13.5
58-ギターソロ2.52.62.34.33.4
55-Haydn管楽器2.12.62.453.6
↑音源平均点2.232.052.273.823.03
全サイズ1.41MB1.37MB1.34MB1.40MB1.33MB
エンコーダLAME 3.92ffmpeg内蔵libFAACiTunes10.0NeroAACEnc

注:数十人が参加した2011年7月の公開リスニングテストで、iTunes≒Fraunhofer IIS>Coding Technologies>Nero>>>ffmpeg内蔵という結果が出ています。

http://listening-tests.hydrogenaud.io/igorc/aac-96-a/results.html

f:id:kamedo2:20110210153250p:image

エンコーダLAME 3.92ffmpeg内蔵ffmpeg内蔵libFAACiTunes10.0NeroAACEnc
↓音源参考→2002年版実験段階-cutoff 17000バイナリ配布不可2010年版2009年版
true my heartPOPS4.31.64.23.34.65
愛があれば大丈夫POPS3.22.53.13.23.83.3
27-カスタネットソロ2.521.92.743.3
拍手 applaudライブ2.32.62.82.63.33
fatboyテクノ21.61.82.84.13.9
Tarentella管楽器2.72.53.43.14.22.9
水瀬さんち男女声3.52.62.62.93.84.2
Miles Davisジャズ2.62.33343.7
58-ギターソロ3.62.62.43.64.73.8
55-Haydn管楽器2.73.23.34.555
↑音源平均点2.922.332.843.154.123.80
全サイズ1.88MB1.76MB1.73MB1.77MB1.82MB1.78MB
エンコーダLAME 3.92ffmpeg内蔵ffmpeg内蔵libFAACiTunes10.0NeroAACEnc

前回の比較で、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""