音風景ブログ

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

FFmpegから使えるAACエンコーダ の音質比較

概要

FFmpegから使えるAACエンコーダの音質比較。比較対象は、FFmpeg公式推奨の Fraunhofer FDK AAC 外部ライブラリ(-c:a libfdk_aac)と、FFmpeg内蔵AACエンコーダ(-c:a aac)。

結果

Fraunhofer FDK-AAC ライブラリがFFmpeg内蔵AACエンコーダよりも音質が良かった。FFmpeg内蔵AACエンコーダとの比較で、FDK-AAC は32kbps少ないビットレートで同等の音質を実現した。

評価

f:id:kamedo2:20210324010729p:plain
FFmpegから使えるAACエンコーダ の音質比較、全結果
f:id:kamedo2:20210324010823p:plain
FFmpegから使えるAACエンコーダ の音質比較、テストされた15音源と評点一覧
形式 AAC AAC AAC AAC AAC AAC
エンコーダ FFmpeg FFmpeg FFmpeg FDK FDK FDK
バージョン r.77891 r.77891 r.77891 0.1.4 0.1.4 0.1.4
リリース年 2016 2016 2016 2015 2015 2015
レート制御 ABR ABR ABR ABR ABR ABR
指定レート 64k 96k 128k 64k 96k 128k
平均スコア 2.02 2.83 3.47 2.69 3.43 4.33
実レート 66k 99k 134k 66k 98k 130k
エンコーダ FFmpeg FFmpeg FFmpeg FDK FDK FDK
バージョン r.77891 r.77891 r.77891 0.1.4 0.1.4 0.1.4
形式 AAC-LC AAC-LC AAC-LC AAC-LC AAC-LC AAC-LC

テストに利用した音源を試聴したい方、ダウンロードしたい方、ログを見たい方はこちらへ。
http://zak.s206.xrea.com/bitratetest/main.htm

方法

銘柄に対する先入観が影響しないように、PSP ABC/HR v2.4とRP-HJE150を利用して、5個のエンコードされた圧縮音源をランダムに並び替えて、銘柄を伏せて採点した。採点基準は、「音質劣化が非常に気になる」が1点 「気になる」が2点 「わずかに気になる」が3点 「原音からの音質変化が分かるが、気にならない」が4点 「音質変化がわからない、区別できない」が5点。4.9点以下の評点をつける場合は、ABXYテストを15回行い、12回以上(これ以上の成績をまぐれで出す確率は約2%)正解して、違いを聞き取れることを確認してからそうした。このテストでの採点は、15(音源)×6(エンコーダ)×1(回)=90(回)。

使用したオプション

FFmpeg 内蔵AACエンコーダ
ffmpeg77891 -i in.wav -c:a aac -b:a 64k out.mp4
ffmpeg77891 -i in.wav -c:a aac -b:a 96k out.mp4
ffmpeg77891 -i in.wav -c:a aac -b:a 128k out.mp4
FDK-AAC
ffmpeg77891 -i in.wav -c:a libfdk_aac -b:a 64k out.mp4
ffmpeg77891 -i in.wav -c:a libfdk_aac -b:a 96k out.mp4
ffmpeg77891 -i in.wav -c:a libfdk_aac -b:a 128k out.mp4

詳細な優劣の分析

FRIEDMAN version 1.24 (Jan 17, 2002) http://ff123.net/
Blocked ANOVA analysis

Number of listeners: 15
Critical significance:  0.05
Significance of data: 0.00E+000 (highly significant)
---------------------------------------------------------------
ANOVA Table for Randomized Block Designs Using Ratings

Source of         Degrees     Sum of    Mean
variation         of Freedom  squares   Square    F      p

Total               89          55.70
Testers (blocks)    14           1.91
Codecs eval'd        5          47.62    9.52   107.92  0.00E+000
Error               70           6.18    0.09
---------------------------------------------------------------
Fisher's protected LSD for ANOVA:   0.216

Means:

fdk128   ffa128   fdk96k   ffa96k   fdk64k   ffa64k   
  4.33     3.47     3.43     2.83     2.69     2.02   

---------------------------- p-value Matrix ---------------------------

         ffa128   fdk96k   ffa96k   fdk64k   ffa64k   
fdk128   0.000*   0.000*   0.000*   0.000*   0.000*   
ffa128            0.668    0.000*   0.000*   0.000*   
fdk96k                     0.000*   0.000*   0.000*   
ffa96k                              0.201    0.000*   
fdk64k                                       0.000*   
-----------------------------------------------------------------------

fdk128 is better than ffa128, fdk96k, ffa96k, fdk64k, ffa64k
ffa128 is better than ffa96k, fdk64k, ffa64k
fdk96k is better than ffa96k, fdk64k, ffa64k
ffa96k is better than ffa64k
fdk64k is better than ffa64k

整形済みデータ

ffa64k	ffa96k	ffa128	fdk64k	fdk96k	fdk128	
1.800	2.600	3.300	2.600	3.600	4.200	
2.000	2.800	3.500	2.700	3.200	4.400	
2.000	2.900	3.300	2.700	3.900	4.100	
2.100	3.300	3.900	2.600	3.800	4.200	
2.200	2.700	3.500	3.200	3.800	4.000	
1.800	2.700	3.300	2.500	3.300	3.900	
2.200	2.800	3.400	2.900	3.700	5.000	
2.000	3.100	3.600	2.700	3.800	4.300	
1.900	2.500	3.500	3.400	3.800	4.000	
2.100	2.900	3.500	2.400	2.800	3.900	
1.800	2.800	2.900	2.300	3.200	3.900	
2.200	2.400	3.400	2.900	3.500	4.100	
2.200	2.800	3.500	2.600	3.300	5.000	
2.100	3.000	3.700	2.500	2.700	5.000	
1.900	3.100	3.800	2.300	3.000	5.000	
%samples	41_30sec	Perc.
%samples	finalfantasy	Strings
%samples	ATrain	Jazz
%samples	BigYellow	Pops
%samples	FloorEssence	Techno
%samples	macabre	Classic
%samples	mybloodrusts	Guitar
%samples	Quizas	Latin
%samples	VelvetRealm	Techno
%samples	Amefuribana	Pops
%samples	Trust	Gospel
%samples	Waiting	Rock
%samples	Experiencia	Latin
%samples	HearttoHeart	Pops
%samples	Tom'sDiner	Acappella

注:公開試聴試験での多人数の平均評点と管理人の評点が似たような傾向になることは確認しているので言えるが、ある個人がある再生環境で、ある価値観のもとに聞いたときの評価が、ここに書いた管理人の評価に似るかどうかまでは何とも言えない。また、今回利用した音源とは傾向の異なる音を多くエンコードした場合、結果や順位が異なる可能性があります。

MP3, Opus, AAC 96kbps の音質比較

概要

音声コーデック3種類の音質比較。ビットレートは 96kbps にて比較。使用したエンコーダは、人気 MP3 エンコーダの LAME, 低遅延と高音質を両立する Opus コーデックの Opus 1.1, AACエンコーダ 3種類。その中でも AAC は、エンコーダによって圧縮性能が大きく異なるが、今回は Apple のエンコーダよりは悪いが、フリーなエンコーダよりは良いとされる、NeroAACEncと、実験段階のフリーなエンコーダである FFmpeg内蔵AACエンコーダに中間 v7 パッチ、中間 v9b パッチを適用したもの(一般配布はされていない)の3種類をテストした。
(2016/02/16追記:2016年現在、FFmpeg内蔵AACエンコーダはv9b相当の音質となっています。)

結果

Opus > NeroAACEnc > LAME > FFmpeg内蔵AACエンコーダ+中間v9bパッチ > FFmpeg内蔵AACエンコーダ+中間v7パッチ
Opus が最も原音に忠実という結果になった。Nero が2位、LAME が3位、FFmpeg内蔵AACエンコーダが最下位となった。FFmpeg内蔵AACエンコーダの中では、M/Sエンコードに対応した新しい v9bパッチの方が原音に近い音質となった。

評価

形式 MP3 Opus AAC AAC AAC
エンコーダ LAME Opus Nero FFmpeg FFmpeg
バージョン 3995 0.1.9 1540 v7 v9b
リリース年 2012 2014 2009 2013 2014
レート制御 ABR VBR VBR ABR ABR
指定レート 98k 91k q0.333 96k 96k
35_SQAM_glockenspiel_cut Inst. 4.3 4.5 4.4 3.9 3.4
Can't Wait Until Tonight (Dry Wurlitzer Mix) Pops 3.2 3.7 3.5 3.1 2.7
girl Techno 3.2 3.6 2.8 2.0 2.4
Robots_old Techno 3.2 4.3 4.1 3.4 3.5
SinceAlways Guitar 3.6 5.0 3.8 3.4 2.8
trumpet Wind 3.6 5.0 3.9 2.4 2.5
velvet Perc. 3.2 3.5 3.7 2.8 2.7
Waiting Pops 3.3 4.3 3.8 3.5 3.7
Asleep__4.11-4.31_ Strings 3.8 5.0 5.0 3.6 3.9
Greatest_Love_of_All_2min57 Pops 3.7 4.1 3.6 3.1 3.7
Hey Tonight Rock 3.1 3.8 3.5 2.6 3.3
Severance__1.31-1.51_ Pops 3.8 4.2 3.9 3.4 3.7
Shinsho_pool_3min45_4min4 Pops 3.0 4.3 3.6 3.4 3.2
SlavesOfFear Metal 4.4 5.0 5.0 4.6 4.0
The Chastising of Renegade Rock 3.2 5.0 4.0 3.0 3.7
TrosYGareg Pops 3.7 4.4 4.0 3.4 4.1
4-Sound-English-male.441 Voice 4.3 5.0 4.4 2.9 3.9
9-Have-big-expensive-car.441 Pops 3.0 3.9 3.6 3.2 3.2
12-German-male-speech.441 Voice 3.7 4.0 3.2 2.4 3.0
15-Good-evening.441 Voice 3.9 4.0 3.8 3.0 3.5
21-classic.441 Classic 3.6 5.0 4.0 3.3 3.7
24-Greensleeves-Korean-male-speech.441 Voice 3.8 4.6 4.1 2.8 3.1
25-This-is-the-end.441 Voice 3.8 4.4 4.1 3.4 3.6
27-last-song-drums-and-trampets.441 Perc. 3.3 5.0 4.3 3.1 3.9
bonhemian_rhapsody Rock 4.2 4.3 4.1 3.3 3.9
clapton_44k Guitar 3.9 4.2 4.1 3.3 3.7
Coral Pops 4.0 5.0 4.0 3.3 3.7
ExitMusic Vocal 3.9 4.1 3.5 2.2 3.1
liberate Metal 2.8 4.5 4.2 3.2 3.3
NewYorkCity Pops 3.6 4.3 4.2 3.2 3.5
sandman Rock 3.3 3.7 3.6 2.7 3.0
take_your_finger_frin_my_head Rock 4.0 3.8 3.9 3.4 3.7
Changes Rock 4.1 4.4 4.5 3.2 3.8
Girl_In_The_Fire__Sample_ Rock 4.1 4.4 4.0 3.6 3.7
Hotel California Rock 3.5 4.2 3.8 3.1 3.6
Jupiter, the Bringer of Jolity Classic 3.8 4.1 4.4 4.5 4.3
Last_Of_The_Mohicanz__Sample_ Techno 4.0 4.4 4.0 3.1 2.9
Only Time Newage 3.2 4.2 3.9 3.6 3.8
Through The Fire And Flames Metal 4.7 5.0 5.0 3.6 3.5
With Love (Outro) Techno 3.3 4.3 3.9 3.1 3.2
10 41_30sec Perc. 2.6 3.5 2.9 2.1 2.0
11 finalfantasy Strings 4.2 4.5 4.3 3.2 3.8
12 ATrain Jazz 3.2 4.3 3.6 3.5 3.3
13 BigYellow Pops 3.0 4.2 3.9 2.5 3.2
14 FloorEssence Techno 3.6 4.4 3.9 2.7 3.1
15 macabre Classic 2.9 3.2 3.5 2.9 3.3
16 mybloodrusts Guitar 4.0 4.4 4.2 3.5 2.7
17 Quizas Latin 3.5 4.2 3.6 3.0 3.6
18 VelvetRealm Techno 3.6 3.9 4.0 3.0 3.2
19 雨降花 Pops 3.6 4.3 4.2 2.6 3.8
20 Trust Gospel 2.7 4.0 3.3 2.5 2.9
21 Waiting Rock 3.2 4.2 3.6 3.0 3.4
22 Experiencia Latin 4.0 4.1 3.8 3.3 3.5
23 Heart To Heart Pops 3.7 4.6 4.3 2.9 3.3
24 Tom's Diner Vocal 3.5 4.0 3.2 2.6 2.9
25 ReunionBlues Jazz 3.1 3.9 3.8 2.9 3.3
26 French Voice 4.0 4.4 3.7 2.8 3.5
27 undelete Pops 3.8 4.1 4.2 2.7 3.3
28 Dimmu Borgir Metal 4.2 5.0 4.5 3.6 3.4
29 Run up Pops 4.1 4.5 3.3 3.0 3.5
30 German Voice 3.4 4.2 3.6 2.7 3.3
31 It could be sweet Pops 3.9 4.1 4.1 2.8 3.5
32 on the roof with Quasimodo Pops 4.1 4.5 3.8 2.8 3.4
33 easy game Pops 4.1 4.3 4.0 3.6 3.9
34 Tears Infection Pops 4.0 4.5 3.7 3.4 3.8
J.S.Bach, "Easter-Oratorio" Classic 3.8 5.0 4.4 3.6 3.9
Bass Vocal 3.8 4.0 3.8 3.4 3.5
Castanets Inst. 2.9 4.2 3.7 2.5 2.4
French Male Speech Voice 4.4 4.7 4.5 2.8 3.6
Glockenspiel Inst. 4.3 4.5 4.6 3.7 4.1
Harpsichord Inst. 3.8 3.7 4.0 3.3 3.6
Postscriptum, "You were here" Pops 3.8 4.5 4.0 3.4 3.7
Mike Oldfield, "Music From The Balcony" Rock 3.7 5.0 4.5 4.0 4.1
Quartet Vocal 3.7 3.9 3.2 3.3 3.6
平均スコア 3.65 4.31 3.93 3.13 3.42
実レート 99k 101k 96k 98k 98k
エンコーダ LAME Opus Nero FFmpeg FFmpeg
バージョン 3995 0.1.9 1540 v7 v9b
形式 MP3 Opus AAC AAC AAC

テストに利用した音源を試聴したい方、ダウンロードしたい方、ログを見たい方はこちらへ。
http://listening-test.coresv.net/results.htm
http://zak.s206.xrea.com/bitratetest/main.htm
[file:kamedo2:bitratetest_wav30-34.zip]
http://soundexpert.org/sound-samples

方法

銘柄に対する先入観が影響しないように、PSP ABC/HR v2.4とRP-HJE150を利用して、5個のエンコードされた圧縮音源をランダムに並び替えて、銘柄を伏せて採点した。採点基準は、「音質劣化が非常に気になる」が1点 「気になる」が2点 「わずかに気になる」が3点 「原音からの音質変化が分かるが、気にならない」が4点 「音質変化がわからない、区別できない」が5点。4.9点以下の評点をつける場合は、ABXYテストを15回行い、12回以上(これ以上の成績をまぐれで出す確率は約2%)正解して、違いを聞き取れることを確認してからそうした。このテストでの採点は、74(音源)×5(エンコーダ)×1(回)=370(回)。

使用したオプション

LAME 3.99.5

lame --abr 98 -S in.wav out.mp3

Opus 1.1、opus-tools-0.1.9 経由

opusenc --bitrate 91 in.wav out.opus

NeroAACEnc 1.5.4.0

NeroAacEnc -q 0.333 -if in.wav -of out.mp4

FFmpeg内蔵AACエンコーダ、r.70351+中間パッチv7適用済みビルド(一般配布なし)

ffmpeg70351_v7 -y -i in.wav -c:a aac -strict experimental -b:a 96k out.mp4

FFmpeg内蔵AACエンコーダ、r.70351+中間パッチv9b適用済みビルド(一般配布なし)

ffmpeg70351_v9b -y -i in.wav -c:a aac -strict experimental -b:a 96k out.mp4

詳細な優劣の分析

FRIEDMAN version 1.24 (Jan 17, 2002) http://ff123.net/
Blocked ANOVA analysis

Number of listeners: 74
Critical significance:  0.05
Significance of data: 1.11E-016 (highly significant)
---------------------------------------------------------------
ANOVA Table for Randomized Block Designs Using Ratings

Source of         Degrees     Sum of    Mean
variation         of Freedom  squares   Square    F      p

Total              369         134.26
Testers (blocks)    73          45.11
Codecs eval'd        4          61.69   15.42   164.04  1.11E-016
Error              292          27.45    0.09
---------------------------------------------------------------
Fisher's protected LSD for ANOVA:   0.099

Means:

opus     nero     lame     ffv9b    ffv7
  4.31     3.93     3.65     3.42     3.13

---------------------------- p-value Matrix ---------------------------

         nero     lame     ffv9b    ffv7
opus     0.000*   0.000*   0.000*   0.000*
nero              0.000*   0.000*   0.000*
lame                       0.000*   0.000*
ffv9b                               0.000*
-----------------------------------------------------------------------

opus is better than nero, lame, ffv9b, ffv7
nero is better than lame, ffv9b, ffv7
lame is better than ffv9b, ffv7
ffv9b is better than ffv7

整形済みデータ

% 96kbps ABC/HR Score
% This format is compatible with my graphmaker, as well as ff123's FRIEDMAN.
lame	opus	nero	ffv7	ffv9b
4.300	4.500	4.400	3.900	3.400	
3.200	3.700	3.500	3.100	2.700	
3.200	3.600	2.800	2.000	2.400	
3.200	4.300	4.100	3.400	3.500	
3.600	5.000	3.800	3.400	2.800	
3.600	5.000	3.900	2.400	2.500	
3.200	3.500	3.700	2.800	2.700	
3.300	4.300	3.800	3.500	3.700	
3.800	5.000	5.000	3.600	3.900	
3.700	4.100	3.600	3.100	3.700	
3.100	3.800	3.500	2.600	3.300	
3.800	4.200	3.900	3.400	3.700	
3.000	4.300	3.600	3.400	3.200	
4.400	5.000	5.000	4.600	4.000	
3.200	5.000	4.000	3.000	3.700	
3.700	4.400	4.000	3.400	4.100	
4.300	5.000	4.400	2.900	3.900	
3.000	3.900	3.600	3.200	3.200	
3.700	4.000	3.200	2.400	3.000	
3.900	4.000	3.800	3.000	3.500	
3.600	5.000	4.000	3.300	3.700	
3.800	4.600	4.100	2.800	3.100	
3.800	4.400	4.100	3.400	3.600	
3.300	5.000	4.300	3.100	3.900	
4.200	4.300	4.100	3.300	3.900	
3.900	4.200	4.100	3.300	3.700	
4.000	5.000	4.000	3.300	3.700	
3.900	4.100	3.500	2.200	3.100	
2.800	4.500	4.200	3.200	3.300	
3.600	4.300	4.200	3.200	3.500	
3.300	3.700	3.600	2.700	3.000	
4.000	3.800	3.900	3.400	3.700	
4.100	4.400	4.500	3.200	3.800	
4.100	4.400	4.000	3.600	3.700	
3.500	4.200	3.800	3.100	3.600	
3.800	4.100	4.400	4.500	4.300	
4.000	4.400	4.000	3.100	2.900	
3.200	4.200	3.900	3.600	3.800	
4.700	5.000	5.000	3.600	3.500	
3.300	4.300	3.900	3.100	3.200	
2.600	3.500	2.900	2.100	2.000	
4.200	4.500	4.300	3.200	3.800	
3.200	4.300	3.600	3.500	3.300	
3.000	4.200	3.900	2.500	3.200	
3.600	4.400	3.900	2.700	3.100	
2.900	3.200	3.500	2.900	3.300	
4.000	4.400	4.200	3.500	2.700	
3.500	4.200	3.600	3.000	3.600	
3.600	3.900	4.000	3.000	3.200	
3.600	4.300	4.200	2.600	3.800	
2.700	4.000	3.300	2.500	2.900	
3.200	4.200	3.600	3.000	3.400	
4.000	4.100	3.800	3.300	3.500	
3.700	4.600	4.300	2.900	3.300	
3.500	4.000	3.200	2.600	2.900	
3.100	3.900	3.800	2.900	3.300	
4.000	4.400	3.700	2.800	3.500	
3.800	4.100	4.200	2.700	3.300	
4.200	5.000	4.500	3.600	3.400	
4.100	4.500	3.300	3.000	3.500	
3.400	4.200	3.600	2.700	3.300	
3.900	4.100	4.100	2.800	3.500	
4.100	4.500	3.800	2.800	3.400	
4.100	4.300	4.000	3.600	3.900	
4.000	4.500	3.700	3.400	3.800	
3.800	5.000	4.400	3.600	3.900	
3.800	4.000	3.800	3.400	3.500	
2.900	4.200	3.700	2.500	2.400	
4.400	4.700	4.500	2.800	3.600	
4.300	4.500	4.600	3.700	4.100	
3.800	3.700	4.000	3.300	3.600	
3.800	4.500	4.000	3.400	3.700	
3.700	5.000	4.500	4.000	4.100	
3.700	3.900	3.200	3.300	3.600	

%samples	35_SQAM_glockenspiel_cut	Inst.
%samples	Can't Wait Until Tonight (Dry Wurlitzer Mix)	Pops
%samples	girl	Techno
%samples	Robots_old	Techno
%samples	SinceAlways	Guitar
%samples	trumpet	Wind
%samples	velvet	Perc.
%samples	Waiting	Pops

%samples	Asleep__4.11-4.31_	Strings
%samples	Greatest_Love_of_All_2min57	Pops
%samples	Hey Tonight	Rock
%samples	Severance__1.31-1.51_	Pops
%samples	Shinsho_pool_3min45_4min4	Pops
%samples	SlavesOfFear	Metal
%samples	The Chastising of Renegade	Rock
%samples	TrosYGareg	Pops

%samples	4-Sound-English-male.441	Voice
%samples	9-Have-big-expensive-car.441	Pops
%samples	12-German-male-speech.441	Voice
%samples	15-Good-evening.441	Voice
%samples	21-classic.441	Classic
%samples	24-Greensleeves-Korean-male-speech.441	Voice
%samples	25-This-is-the-end.441	Voice
%samples	27-last-song-drums-and-trampets.441	Perc.

%samples	bonhemian_rhapsody	Rock
%samples	clapton_44k	Guitar
%samples	Coral	Pops
%samples	ExitMusic	Vocal
%samples	liberate	Metal
%samples	NewYorkCity	Pops
%samples	sandman	Rock
%samples	take_your_finger_from_my_hair	Rock

%samples	Changes	Rock
%samples	Girl_In_The_Fire__Sample_	Rock
%samples	Hotel California	Rock
%samples	Jupiter, the Bringer of Jolity	Classic
%samples	Last_Of_The_Mohicanz__Sample_	Electro
%samples	Only Time	Newage
%samples	Through The Fire And Flames	Metal
%samples	With Love (Outro)	Techno


%samples	41_30sec	Perc.
%samples	finalfantasy	Strings
%samples	ATrain	Jazz
%samples	BigYellow	Pops
%samples	FloorEssence	Techno
%samples	macabre	Classic
%samples	mybloodrusts	Guitar
%samples	Quizas	Latin
%samples	VelvetRealm	Techno
%samples	Amefuribana	Pops
%samples	Trust	Gospel
%samples	Waiting	Rock
%samples	Experiencia	Latin
%samples	HearttoHeart	Pops
%samples	Tom'sDiner	Acappella
%samples	ReunionBlues	Jazz
%samples	French	Voice
%samples	undelete	Pops
%samples	DimmuBorgir	Metal
%samples	Run_up	Pops
%samples	German	Speech
%samples	ItCouldBeSweet	Pops
%samples	OnTheRoofWith	Pops
%samples	easy_game	Pops
%samples	TearsInfection	Pops

%samples	J.S.Bach, "Easter-Oratorio"	Classic
%samples	Bass	Vocal
%samples	Castanets	Inst.
%samples	FrenchMaleSpeech	Voice
%samples	Glockenspiel	Inst.
%samples	Harpsichord	Inst.
%samples	You were here	Pops
%samples	Music From The Balcony	Rock
%samples	Quartet	Vocal

注:公開試聴試験での多人数の平均評点と管理人の評点が似たような傾向になることは確認しているので言えるが、ある個人がある再生環境で、ある価値観のもとに聞いたときの評価が、ここに書いた管理人の評価に似るかどうかまでは何とも言えない。また、今回利用した音源とは傾向の異なる音を多くエンコードした場合、結果や順位が異なる可能性があります。

FFmpegから使えるエンコーダの音質比較

警告

この内容は2014年の古い結果です。
2024年2月現時点では、AACへのエンコードならばFFmpeg公式推奨の Fraunhofer FDK AAC 外部ライブラリ(-c:a libfdk_aac) を推奨します。

  • 2015年10月より、FFmpeg内蔵AACエンコーダの音質は、以下に説明するv7パッチよりも少し良い程度の音質となっています。すでに修正が終わった状態でFFmpegが配布されているため、パッチを当てる必要はありません。
  • libfaac のサポートは2016年10月に廃止されました。使おうとするとFFmpegからUnknown encoder ‘libfaac’と言われるはずです。コマンドライン中のlibfaacをlibfdk_aacに書き換えてください。

概要

FFmpegで使える音声エンコーダの音質比較。比較対象は、FFmpeg内蔵AACエンコーダ(v4パッチ ABR、v7パッチ ABR、v7パッチ VBR)、FAAC(libfaac)、FDK-AAC(libfdk_aac)、LAME(libmp3lame)、FFmpeg内蔵AC3の7種類。ビットレートは128kbps。

FFmpeg内蔵AACエンコーダの品質を改善するv4パッチ、v7パッチはhttps://trac.ffmpeg.org/ticket/2686から入手できるが、自分で適用してビルドする必要がある。
(注:2015年10月より、パッチは新しいFFmpegに取り込まれた上、さらに細かい改善が行われています。そのため最新のFFmpegに内蔵されているAACエンコーダは図のv7よりも少し良い程度の音質となっています。2016年3月11日現在追記。)

結果

FDK-AAC > LAME ≒ FAAC > FFmpeg内蔵AACエンコーダ(v7パッチABR ≒ v4パッチABR ≒ v7パッチVBR) ≒ 内蔵AC3
FDK-AACが最も高い評価点となった。ただしFDK-AACとFAACはFFmpegのバイナリプログラムが配布不可であり、FDK-AACとFAACを使うためには、自分でFFmpegをビルドする必要がある。パッチ適用済みのFFmpeg内蔵AACエンコーダは2014年3月現在まだ一般的には配布されていない。それらを除くと、LAMEが最も高い評価となった。

評価

エンコーダ AAC AAC AAC FAAC FDK LAME 内AC3
バージョン v4 v7 v7 1.28 0.1.2 3.99.5 r57288
リリース年 2013 2013 2013 2009 2013 2012 2013
レート制御 ABR ABR VBR VBR ABR VBR CBR
指定レート 128k 128k 0.7 97 128k V5 128k
ファイル形式 AAC AAC AAC AAC AAC MP3 AC3
41_30sec 打楽器 1.8 2.2 1.7 2.7 3.6 3.9 2.5
finalfantasy 撥弦楽 2.6 3.5 1.9 3.9 4.4 3.0 2.6
ATrain ジャズ 3.8 4.2 3.2 3.8 4.3 4.0 2.7
BigYellow POPS 3.4 3.3 2.5 3.4 3.8 3.5 2.2
FloorEssence テクノ 3.1 2.7 3.3 3.5 3.9 3.4 3.4
macabre オケ 2.6 3.2 2.4 3.3 3.5 3.6 2.0
mybloodrusts 弦楽器 2.0 2.9 2.2 3.5 4.3 3.2 2.8
Quizas ラテン 3.4 3.2 2.8 3.5 4.2 3.8 2.9
VelvetRealm テクノ 2.6 2.4 2.2 4.1 3.6 3.9 3.3
雨降花 POPS 3.3 2.9 2.8 3.4 4.0 3.7 2.4
Trust Gosp 3.4 3.1 3.4 4.3 4.0 3.8 2.3
Waiting ロック 2.7 3.1 2.9 3.4 3.8 3.5 3.0
Experiencia ラテン 3.3 3.1 2.4 3.4 5.0 3.6 2.3
HeartToHeart POPS 3.1 2.9 2.4 3.8 5.0 3.5 2.5
Tom's Diner 女声 3.3 3.0 2.7 3.6 4.1 3.5 3.0
ReunionBlues ジャズ 3.5 3.2 3.1 3.6 3.8 3.7 2.5
French 男女声 2.5 3.3 2.8 3.1 5.0 3.8 3.5
undelete POPS 2.9 2.8 3.3 3.5 4.1 3.7 3.1
Dimmu Borgir メタル 2.2 3.3 2.9 3.7 4.0 3.8 2.7
Run up POPS 3.2 3.3 2.4 3.7 4.4 3.6 2.6
German 男声 2.8 2.6 3.2 3.0 5.0 3.6 3.4
ItCouldBeSweet POPS 2.7 2.9 2.9 3.2 4.0 3.9 2.6
ontheroofwith POPS 2.7 3.0 3.5 4.1 5.0 3.8 3.8
easy game POPS 2.6 3.4 3.1 5.0 3.9 4.1 2.5
Tears Infection POPS 3.9 3.6 2.4 4.0 4.3 3.1 2.5
↑音源 平均点 2.94 3.08 2.74 3.62 4.20 3.64 2.76
実レート 129k 129k 138k 132k 130k 135k 128k
エンコーダ AAC AAC AAC FAAC FDK LAME 内AC3
バージョン v4 v7 v7 1.28 0.1.2 3.99.5 r57288

テストに利用した音源を試聴したい方、ダウンロードしたい方、ログを見たい方はこちらへ。
http://zak.s206.xrea.com/bitratetest/main.htm
[file:kamedo2:bitratetest_wav30-34.zip]

方法

銘柄に対する先入観が影響しないように、PSP ABC/HR v2.4とRP-HT560を利用して、7個のエンコードされた圧縮音源をランダムに並び替えて、銘柄を伏せて採点した。1=音質劣化が非常に気になる 2=気になる 3=わずかに気になる 4=原音からの音質変化が分かるが、気にならない 5=音質変化がわからない、区別できない。4.9点以下の評点をつける場合は、ABXYテストを15回行い、12回以上(これ以上の成績をまぐれで出す確率は約2%)正解して、違いを聞き取れることを確認してからそうした。このテストでの採点は、25(音源)×7(エンコーダ)×1(回)=175(回)。

使用したオプション

FFmpeg内蔵AACエンコーダ r.55212、v4パッチ、ABR
ffmpeg -i input.wav -c:a aac -strict experimental -b:a 128k out.mp4
FFmpeg内蔵AACエンコーダ r.57288、v7パッチ、ABR
ffmpeg -i input.wav -c:a aac -strict experimental -b:a 128k out.mp4
FFmpeg内蔵AACエンコーダ r.57288、v7パッチ、VBR
ffmpeg -i input.wav -c:a aac -strict experimental -q:a 0.7 out.mp4
FDK-AAC エンコーダ 0.1.2 (これを含むFFmpegバイナリはライセンスの問題から配布されていない、使うには自分でビルドする必要がある。)
ffmpeg -i input.wav -c:a libfdk_aac -b:a 128k -afterburner 1 out.mp4
FAAC 1.28 (これを含むFFmpegバイナリはライセンスの問題から配布されていない)(2024年2月追記:2016年10月に廃止済み)
ffmpeg -i input.wav -c:a libfaac -q:a 97 out.mp4
LAME 3.99.5 V5
ffmpeg -i input.wav -c:a libmp3lame -q:a 5 out.mp3
FFmpeg's AC3 encoder r.57288
ffmpeg -i input.wav -c:a ac3 -b:a 128k out.ac3

詳細な優劣の分析

FRIEDMAN version 1.24 (Jan 17, 2002) http://ff123.net/
Blocked ANOVA analysis

Number of listeners: 25
Critical significance:  0.05
Significance of data: 2.22E-016 (highly significant)
---------------------------------------------------------------
ANOVA Table for Randomized Block Designs Using Ratings

Source of         Degrees     Sum of    Mean
variation         of Freedom  squares   Square    F      p

Total              174          78.35
Testers (blocks)    24           8.63
Codecs eval'd        6          45.26    7.54   44.41  2.22E-016
Error              144          24.46    0.17
---------------------------------------------------------------
Fisher's protected LSD for ANOVA:   0.230

Means:

fdkabr   lameV5   faacQ97  v7abr    v4abr    ac3cbr   v7vbr
  4.20     3.64     3.62     3.08     2.94     2.76     2.74

---------------------------- p-value Matrix ---------------------------

         lameV5   faacQ97  v7abr    v4abr    ac3cbr   v7vbr
fdkabr   0.000*   0.000*   0.000*   0.000*   0.000*   0.000*
lameV5            0.864    0.000*   0.000*   0.000*   0.000*
faacQ97                    0.000*   0.000*   0.000*   0.000*
v7abr                               0.206    0.007*   0.003*
v4abr                                        0.142    0.088
ac3cbr                                                0.811
-----------------------------------------------------------------------

fdkabr is better than lameV5, faacQ97, v7abr, v4abr, ac3cbr, v7vbr
lameV5 is better than v7abr, v4abr, ac3cbr, v7vbr
faacQ97 is better than v7abr, v4abr, ac3cbr, v7vbr
v7abr is better than ac3cbr, v7vbr

整形済みデータ

v4abr v7abr v7vbr faacQ97 fdkabr lameV5 ac3cbr
%feature 7 FFmpeg's_native_AAC FFmpeg's_native_AAC FFmpeg's_native_AAC AAC AAC MP3 ATSC_A/52
1.800 2.200 1.700 2.700 3.600 3.900 2.500
2.600 3.500 1.900 3.900 4.400 3.000 2.600
3.800 4.200 3.200 3.800 4.300 4.000 2.700
3.400 3.300 2.500 3.400 3.800 3.500 2.200
3.100 2.700 3.300 3.500 3.900 3.400 3.400
2.600 3.200 2.400 3.300 3.500 3.600 2.000
2.000 2.900 2.200 3.500 4.300 3.200 2.800
3.400 3.200 2.800 3.500 4.200 3.800 2.900
2.600 2.400 2.200 4.100 3.600 3.900 3.300
3.300 2.900 2.800 3.400 4.000 3.700 2.400
3.400 3.100 3.400 4.300 4.000 3.800 2.300
2.700 3.100 2.900 3.400 3.800 3.500 3.000
3.300 3.100 2.400 3.400 5.000 3.600 2.300
3.100 2.900 2.400 3.800 5.000 3.500 2.500
3.300 3.000 2.700 3.600 4.100 3.500 3.000
3.500 3.200 3.100 3.600 3.800 3.700 2.500
2.500 3.300 2.800 3.100 5.000 3.800 3.500
2.900 2.800 3.300 3.500 4.100 3.700 3.100
2.200 3.300 2.900 3.700 4.000 3.800 2.700
3.200 3.300 2.400 3.700 4.400 3.600 2.600
2.800 2.600 3.200 3.000 5.000 3.600 3.400
2.700 2.900 2.900 3.200 4.000 3.900 2.600
2.700 3.000 3.500 4.100 5.000 3.800 3.800
2.600 3.400 3.100 5.000 3.900 4.100 2.500
3.900 3.600 2.400 4.000 4.300 3.100 2.500
%samples 41_30sec hihats
%samples finalfantasy cemb
%samples ATrain Jazz
%samples BigYellow Pops
%samples FloorEssence Techno
%samples macabre orch
%samples mybloodrusts guitar
%samples Quizas Latin
%samples VelvetRealm Techno
%samples Amefuribana Pops
%samples Trust Gospel
%samples Waiting Rock
%samples Experiencia Latin
%samples HearttoHeart Pops
%samples Tom'sDiner Vocal
%samples ReunionBlues Jazz
%samples French Speech
%samples undelete Pops
%samples DimmuBorgir Metal
%samples Run_up Pops
%samples German Speech
%samples ItCouldBeSweet Pops
%samples OnTheRoofWith Pops
%samples easy_game Pops
%samples TearsInfection Pops	

注:公開試聴試験での多人数の平均評点と管理人の評点が似たような傾向になることは確認しているので言えるが、ある個人がある再生環境で、ある価値観のもとに聞いたときの評価が、ここに書いた管理人の評価に似るかどうかまでは何とも言えない。また、今回利用した音源とは傾向の異なる音を多くエンコードした場合、結果や順位が異なる可能性があります。

日本語版qaacマニュアル

※これは英語版qaac Wiki(https://github.com/nu774/qaac/wiki)の2013/06/26時点での和訳です。

qaac マニュアル

FAQ

うまく動作しないんだけど?

おそらく入力したコマンドが間違っているのが原因。コマンドプロンプトから直接打ち込んでみて、qaacの出力を見てみてください。出力ファイル名には、-oが必要です。
正しいコマンド:

qaac input.wav -o output.m4a

間違ったコマンド:

qaac input.wav output.m4a

qaacは複数の入力ファイルを受け付けることができるので、output.m4a も入力ファイルと解釈されて失敗する。(output.m4aというファイルは存在しないため)

フォルダが二つ(x86フォルダとx64フォルダ)あるけど何? どうやってインストールしたらいい?

x86フォルダに入っているバイナリは32bit用のバイナリで、32bit版・64bit版のどちらのWindowsでも使うことができます。

x64フォルダに入っているバイナリは64bit用のrefalacで、64bit版のWindowsでのみ使うことができます。

一般的に、64bitのexeは64bitのdllしかロードできないし、32bitのexeは32bitのdllしかロードできません。MSVCのランタイムdllは32bit版・64bit版共に同じ名前であることに注意してください。x86フォルダに入っている、32bit版のdllはqaac.exeとrefalac.exeのために必要です。x64フォルダに入っている、64bit版のdllはrefalac64.exeの動作のために必要です。そのため、同じフォルダにこれらのdllを共存させることはできないのです。

すでにMSVCランタイムをインストールしてある場合は、これらのDLLは必要ありません。

-b(サンプルあたりのbit=bit深度)オプションはどうしたらいい?

AACエンコードする場合、PCMオーディオとは異なり、bit深度という概念がそもそも存在しないので、-bオプションは必要ありません。指定しても単純に無視されます。


ALACにロスレスエンコードする場合、-bオプションは使わないでおいてください。このオプションは、本当にbit深度を変えたい場合のみ使ってください。何のDSPも適用せず、-bオプションも使わない場合、出力bit深度は入力したものと同じになります。これが一般的な使い方です。もしDSP、たとえばサンプリング周波数変換やLPFなどを適用した場合、内部サンプルフォーマットはfloat(32bit)に変換されます。そのため-bオプションで16bitや24bitの出力を得たい場合があるでしょう。

--rateオプションはどうしたらいい?

普通、--rateオプションは必要ありません。これはサンプリング周波数を変換するオプションなので、本当に変換したい場合のみ使ってください。AACエンコードする場合、--rateオプションで低いサンプリング周波数を選択するか、--rate autoを使うと低いビットレート設定(例:64kbps未満)にできるようになります。

Apple製のafconvertでは、quality(-q)を0〜127の1刻みで指定できたはず。qaacは0〜2しか指定できないが、なぜ?

APIレベルでは、CoreAudioはkAudioConverterCodecQualityプロパティに0〜127の値を指定できます。afconvertは、-qの値を単純に反映させます。
しかし、AACコーデックはたった3つのステップ(32, 64, 96)しかサポートされていませんし、0〜127は単純にこの3つのどれかで近似されます。-q 0,1,2はそれぞれ32, 64, 96にマップされてツールタグに書き込まれます。
おそらくqaacはこれらの実際の値を直接使うようにインターフェースを変更するべきだろう。-q 0,1,2の指定方法は、qaacがQuickTimeに依存していた時代には自然な方法でありました。


インストール

qaacは32bitのWindowsコンソールアプリケーションであり、Apple Application Supportに依存しています。Apple Application Supportは単体では配布されていませんが、iTunesQuickTimeSafariなどのApple製ソフトウェアに同梱されています。iTunes 10.5に同梱されているAASか、それより新しいAASでないとqaacは動作しません。普通は、最新版が最もおすすめです。

qaacをインストールするには、 qaac_x.xx.zipを展開して、x86フォルダに入っているqaac.exeとDLLをどこか好きな場所においてください。

同梱されているlibsoxrate.dllはオプションであり、qaacはこれなしでも動作します。ただし、リサンプリングやLPFを指定する場合には必要ですので、同じ場所においておいてください。

最適化された高速なリサンプリングのために、libsoxr.dllを使うこともできます。それがqaacと同じディレクトリ(またはPATHのどこか)にある場合、qaacは自動的にlibsoxr.dllを使います。キャビネットページからダウンロードできます。https://sites.google.com/site/qaacpage/cabinet 現状、x86ディレクトリにある32bit libsoxr.dllはlibgcc_s_sjlj-1.dllに依存していて、それもlibsoxr.dllとともにインストールする必要があります。

msvcr100.dll と msvcp100.dll は Visual Studio C++ 2010 のランタイムで、qaacの動作に必要です。おそらくたいていのシステムにはすでにインストールされているでしょうから、その場合にはこれらのDLLは必要ありません。これらのDLLの代わりに、Microsoft Visual C++ 2010 Service Pack 1 Redistributable PackageをMSから落としてきてインストールすることもできます。vcredist_x86.exe が qaac と refalacのために必要です。 64bit Windows上で refalac64 を使いたい場合、vcredist_x64.exe も必要です。

もしFLACWavPack、TAKなどのlibsndfileでサポートされているフォーマットを直接入力したい場合、本家のディストリビューションを入手する必要があります。

FLAC
http://sourceforge.net/projects/flac/files/flac-win/flac-1.2.1-win/ から flac-1.2.1-devel-win.zip をダウンロードしてください。解凍してできたlibFLAC.dll を qaac.exeと同じ場所においてください。
WavPack
http://www.wavpack.com/downloads.html から wavpackdll.zip をダウンロードしてください。解凍してできた wavpackdll.dll を qaac.exeと同じ場所においてください。
TAK
http://www.thbeck.de/Tak/Tak.htmlから tak-x.x.x.zip をダウンロードしてください。解凍してできた tak_deco_lib.dll を qaac.exeと同じ場所においてください。
libsndfile
http://www.mega-nerd.com/libsndfile/ からlibsndfile-1.0.xx-w32-setup.exe をダウンロードしてください。インストーラを実行して, libsndfile-1.dll を Program Files (x86)/Mega-Nerd/libsndfile から見つけて、qaac.exeと同じ場所においてください。このパスは、環境により異なるかもしれません。

コマンドラインオプション

qaac 2.18
Usage: qaac [options] infiles....

"-" as infile means stdin.
On ADTS/WAV output mode, "-" as outfile means stdout.

Main options:
--formats              Show available AAC formats and exit
-a, --abr <bitrate>    AAC ABR mode / bitrate
-V, --tvbr <n>         AAC True VBR mode / quality [0-127]
-v, --cvbr <bitrate>   AAC Constrained VBR mode / bitrate
-c, --cbr <bitrate>    AAC CBR mode / bitrate
                       For -a, -v, -c, "0" as bitrate means "highest".
                       Highest bitrate available is automatically chosen.
                       For LC, default is -V90
                       For HE, default is -v0
--he                   HE AAC mode (TVBR is not available)
-q, --quality <n>      AAC encoding Quality [0-2]
--adts                 ADTS output (AAC only)
-A, --alac             ALAC encoding mode
-d <dirname>           Output directory. Default is current working dir.
--check                Show library versions and exit.
-D, --decode           Wave output mode.
-r, --rate <keep|auto|n>
                       keep: output sampling rate will be same as input
                             if possible.
                       auto: output sampling rate will be automatically
                             chosen by encoder.
                       n: desired output sampling rate in Hz.
--lowpass <number>     Specify lowpass filter cut-off frequency in Hz.
                       Use this when you want lower cut-off than
                       Apple default.
-b, --bits-per-sample <n>
                       Bits per sample of output (for WAV/ALAC only)
--no-dither            Turn off dither when quantizing to lower bit depth.
--gain <f>             Adjust gain by f dB.
                       Use negative value to decrese gain, when you want to
                       avoid clipping introduced by DSP.
-N, --normalize        Normalize (works in two pass. generates HUGE tempfile
                       for large input)
--delay <[[hh:]mm:]ss[.ss..]|ns>
                       Specify delay either by time or number of samples.
                       When positive value is given, prepend silence at the
                       begining to achieve delay of specified amount.
                       When negative value is given, specified length is
                       dropped from the beginning.
                       Example:
                         --delay -2112s : trim 2112 samples at beginning
                         --delay 1.234  : prepend 1.234 seconds silence
--no-delay             Compensate encoder delay by prepending 960 samples 
                       of scilence, then trimming 3 AAC frames from 
                       the beginning (and also tweak iTunSMPB).
                       This option is mainly intended for resolving
                       resolving A/V sync issue of video. 
--gapless-mode <n>     Encoder delay signaling for gapless playback.
                         0: iTunSMPB (default)
                         1: ISO standard (elst + sbgp + sgpd)
                         2: Both
--matrix-preset <name> Specify preset remixing matrix name.
--matrix-file <file>   Specify file containing remixing matrix.
--no-matrix-normalize  Don't automatically normalize(scale) matrix
                       coefficients for the matrix mixer.
--chanmap <n1,n2...>   Re-arrange channels to the specified order.
                       For N-ch input, you take numbers 1,2..N, and
                       arrange them with comma-seperated, to the order
                       you want.
                       For example, "--chanmap 2,1" swaps L and R.
--chanmask <n>         Force specified value as input channel mask(bitmap).
                       If --chanmask 0 is specified, qaac treats it as if
                       no channel mask is present in the source, and pick
                       default layout.
--no-optimize          Don't optimize MP4 container file after encoding.
--tmpdir <dirname>     Temporary directory. Default is %TMP%
-s, --silent           Suppress console messages.
--verbose              More verbose console messages.
-i, --ignorelength     Assume WAV input and ignore the data chunk length.
--threading            Enable multi-threading.
-n, --nice             Give lower process priority.
--sort-args            Sort filenames given by command line arguments.
--text-codepage <n>    Specify text code page of cuesheet/chapter/lyrics.
                       1252 for Latin-1, 65001 for UTF-8.
                       Use this when automatic encoding detection fails.
-S, --stat             Save bitrate statistics into file.
--log <filename>       Output message to file.

Option for output filename generation:
--fname-from-tag       Generate filename based on metadata of input.
                       By default (without this option), output filename is
                       same as input (except for file extension).
                       Name generation can be tweaked by --fname-format.
--fname-format <string>   Format string for output filename.

Option for single output:
-o <filename>          Output filename
--concat               Encode whole inputs into single file. 
                       Requires output filename (with -o)

Option for cuesheet input only:
--cue-tracks <n[-n][,n[-n]]*>
                       Limit extraction to specified tracks.
                       Tracks can be specified with comma separated numbers.
                       Hyphen can be used to denote range of numbers.
                       Tracks non-existent in the cue are just ignored.
                       Numbers must be in the range 0-99.
                       Example:
                         --cue-tracks 1-3,6-9,11
                           -> equivalent to --cue-tracks 1,2,3,6,7,8,9,11
                         --cue-tracks 2-99
                           -> can be used to skip first track (and HTOA)

Options for Raw PCM input only:
-R, --raw              Raw PCM input.
--raw-channels <n>     Number of channels, default 2.
--raw-rate     <n>     Sample rate, default 44100.
--raw-format   <str>   Sample format, default S16L.
                       Sample format spec:
                       1st char: S(igned) | U(nsigned) | F(loat)
                       2nd part: Bitwidth
                       Last part: L(ittle Endian) | B(ig Endian)
                       Last part can be omitted, L is assumed by default.
                       Cases are ignored. u16b is OK.

Options for CoreAudio sample rate converter:
--native-resampler[=line|norm|bats,n]
                       Arguments are optional.
                       Without argument, codec default SRC is used.
                       With argument, dedicated AudioConverter is used for
                       sample rate conversion.
                       '--native-resampler' and arguments must be delimited
                       by a '=' (space is not usable here).
                       Arguments must be delimited by a ','(comma).
                       First argument is sample rate converter complexity,
                       and one of line, norm, bats.
                         line: linear (worst, don't use this)
                         norm: normal
                         bats: mastering (best, but quite sloooow)
                       Second argument is sample rate converter quality,
                       which is an integer between 0-127.
                       Example:
                         --native-resampler
                         --native-resampler=norm,96

Tagging options:
 (same value is set to all files, so use with care for multiple files)
--title <string>
--subtitle <string>
--artist <string>
--band <string>       This means "Album Artist".
--album <string>
--grouping <string>
--composer <string>
--comment <string>
--genre <string>
--date <string>
--track <number[/total]>
--disk <number[/total]>
--compilation[=0|1]
                      By default, iTunes compilation flag is not set.
                      --compilation or --compilation=1 sets flag on.
                      --compilation=0 is same as default.
--lyrics <filename>
--artwork <filename>
--artwork-size <n>    Specify maximum width or height of artwork in pixels.
                      If specified artwork (with --artwork) is larger than
                      this, artwork is automatically resized.
--chapter <filename>
                      Set chapter from file.
--tag <fcc>:<value>
                      Set iTunes pre-defined tag with four-char-code key
                      and value.
                      1) For some fcc starting with U+00A9 (copyright sign),
                         you can enter 3 chars starting from the second char
                         instead.
                      2) Some known tags using type-code other than UTF-8
                         are taken care of. Rest are just written as UTF-8
                         string.
--long-tag <name>:<value>
                      Set long tag (iTunes custom metadata) with 
                      arbitrary name/value pair. Value is always stored as
                      UTF8 string.

使用例

AACエンコード

qaac foo.wav

で、foo.m4aをカレントディレクトリに生成します。AACエンコーダがデフォルトで選択され、TVBR 90、quality 2(最高品質)となります。
TVBRの品質を変えたい場合、-V 127 のように指定します。(訳注:-Vの値が大きいほど品質が高いが、ファイルサイズも大きくなる。参考:http://d.hatena.ne.jp/kamedo2/20121116/1353099244)

--adts オプションが指定された場合、qaac は ADTS (いわゆる生出力) を拡張子 .m4aの代わりに .aacで行います。そのADTS出力を stdout に吐かせるには

qaac --adts -V63 -o- foo.flac | whatever_program

とします。

ALACのエンコード

qaac -A foo.wav

で、foo.m4a というALACファイルができます。

複数ファイルの一括エンコード

qaac *.flac -d some_directory

が便利です。それぞれのトラックがsome_directory内にAACエンコードされます。

qaac --concat *.flac -o out.m4a

は入力全てをout.m4aに連結します。それぞれの入力トラックに、チャプターが挿入されます。

パイプからのエンコード

flac -dc foo.flac | qaac -V 100 --ignorelength - -o foo.m4a

ここで、- が入力ファイル名として使われていて、qaacは普通のファイルからの代わりにstdin(標準入力)から読みます。
もちろん、qaacはFLACを直接読むことができるので、この例のようにパイプを使ってFLACを読ませることには意味がありません。

名前つきパイプの使用

まず、コマンドプロンプトを立ち上げて、次のようなコマンドを実行してください。

qaac --adts -o \\.\pipe\foo.aac foo.wav

次に、別のコマンドプロンプトを立ち上げて、次のようなコマンドを実行してください。

x264 --audiofile \\.\pipe\foo.aac --acodec copy -o bar.mp4 video.avs

この例では、qaacは\\.\pipe\foo.aacという名前つきパイプを作り、接続されるのを待ちます。2番目のコマンドラインが実行されると、qaacはエンコードを始め、名前つきパイプに食わせます。2番目のコマンドラインは\\.\pipe\foo.aacからオーディオを読むようにx264に指示しているので、x264はオーディオのエンコードを行うことなく単純にmuxします。x264はこのファイルの実体が名前つきパイプであることすら把握していませんが、ともかく動作するのです。

名前つきパイプには、「\\.\pipe\」から始まる任意の名前をつけられます。

もちろんここのx264は単に例として挙げたのみで、何でも良いのです。しかし、本当に動作するかどうかはクライアント側のプログラムによります。一般論として、シークが必要だったり、入力ファイル名に特別な処理をするようなプログラムの場合は、名前つきパイプはうまく動きません。

RAWファイル(ヘッダなしのPCMオーディオ)からのエンコード

qaac -R --raw-channels=6 --raw-rate=48000 --raw-format=S16B foo.pcm

次のようにrawファイルの規格を指定します。

--raw-channels
チャンネル数
--raw-rate
サンプリング周波数[Hz]
--raw-format
[S]igned/[U]nsigned, ビット深度(16bit,24bitなど), [L]ittle/[B]ig endian

デフォルトでは、オプションなしの場合、 2ch, 44100Hz, Signed, 16bit, リトルエンディアンであるとみなします。

外部ソフトからqaacを使う場合の設定

ソフトによって異なる、入力ファイルと出力ファイルを外部ソフト側から指定する方法さえ分かれば、あとは直接コマンドを実行する場合と同じコマンドが使えます。

foobar2000

-A -o %d -

これは、ALACエンコードを行う場合の例です。出力ファイル名には%d、入力ファイル名には「-」と書いておけばOKです。-が入力として指定されているので、foobar2000がパイプに流し込んだものをqaacがパイプから受け止めることになります。

--no-optimizeオプションを使うと便利かもしれません。--no-optimizeはqaacにエンコード後にMP4コンテナを最適化しないように指示するコマンドです。最適化は巨大なファイルの場合時間がかかるし、foobar2000エンコードが終わった後にタグに書き込みするためにファイルを触ることになるからです。

もしfolder.jpgか何かがエンコードの出力先のフォルダにあって、エンコードされるファイルに埋め込みたい場合、このように設定してください。

-V 127 --artwork folder.jpg -o %d -

Exact Audio Copy

Eyolv André Øverland が良いマニュアルを執筆され、送ってきてくれました。こちらからzipでダウンロードできます。 (docxフォーマット): https://sites.google.com/site/qaacpage/usage/EACQAAC.zip?attredirects=0
最近のEACはコマンドが変わりました。これは新しいバージョンのほうのマニュアルです。

DbPowerAmp

-A -o [outfile] -

これはALACエンコードのためのコマンドです。[outfile]が出力ファイルの指定場所であり、-はパイプ入力のために使われています。

エンコーダ設定

デフォルトでは、AAC-LCエンコーダが選択されます。AAC-LC以外のコーデックは、-Aや--heオプションを使って選択できます。

コーデック オプション
ALAC -A
AAC-HE --he
AAC-LC オプションなし

AACエンコーダ(LC・HE)では、音質/サイズ/エンコード速度のトレードオフを決めるオプションを設定できます。



これはアップルのAACエンコーダ設定ダイアログです。(qaacのものではない)

qaacではまず、エンコード設定を決めます。目標のビットレートを指定してその一定のビットレートを保つように設定するか、ある品質を指定してその品質を一定に保つように設定するか、という違いです。

設定 オプション 引き数
TVBR -V, or --tvbr 品質指定の数(0-127)
CVBR -v, or --cvbr 目標のビットレート(in kbps)
ABR -a, or --abr 目標のビットレート(in kbps)
CBR -c, or --cbr 目標のビットレート(in kbps)

デフォルトでは、qaacはTVBRの品質91を設定します。ただし、これが推奨する設定というわけではありません。TVBR(True Variable Bit Rate)は真の可変ビットレートを意味し、Appleはこれを単にVBRと読んでいます。この詳しい意味は、Appleの解説に載っています。

例えば、"-a 128"はABRの設定で目標ビットレートが128kbps。"-V 127"はTVBRの設定で品質が127。TVBRの値は大きいほど品質が高いが、オーディオファイルのサイズも大きくなる(収録曲数が少なくなる)。この数字は0から127までの任意の整数を取れるが、内部的には次の15種類のステップしかなく、その中間の値を指定しても近い値に丸め込まれます。0 9 18 27 36 45 54 63 73 82 91 100 109 118 127 (訳注:例えば-V 101を指定した場合、内部的には、近い100で近似される)

(訳注:POPS中心のCDソースの音楽をTVBRでAAC-LCに変換する場合の-Vの数とビットレート・1時間分のサイズ・音質の目安のまとめがあります)

設定 ビットレート 1時間分のサイズ 音質の目安
-V 0 47kbps 20MB 1.8
-V 9 54kbps 23MB 2.0(気になる)
-V 18 62kbps 27MB 2.3
-V 27 71kbps 30MB 2.6
-V 36 78kbps 33MB 3.0(わずかに気になる)
-V 45 97kbps 42MB 3.6
-V 54 112kbps 48MB 3.8
-V 63 126kbps 54MB 4.0(気にならない)
-V 73 144kbps 62MB 4.3
-V 82 160kbps 69MB 4.6
-V 91 195kbps 84MB 4.7
-V 100 230kbps 98MB 4.8
-V 109 260kbps 112MB
-V 118 290kbps 125MB
-V 127 330kbps 141MB

63はとりあえず最初に指定する値としてよいかもしれない。真ん中にある値なので、「普通の品質」と思うかもしれないが、普通CDを圧縮する場合128kbps付近が選択されるし、そのくらいでAACの場合良好な品質を保つ(iTunesストアはiTunes plusのデビューの前には128kbps ABRの音楽を売っていた)。もちろん、どんな設定があなたにとって適切かどうかは、あなたが自分の耳で決めることである。


CBR、ABR、CVBRの場合、ビットレート 0 は、可能な限り高いビットレートを設定する。そのため、

qaac -c0 foo.wav

は、

qaac -c320 foo.wav

と同じ意味である(2チャンネルのステレオの場合)。

実際のビットレートはチャンネル数、サンプリング周波数、LC/HEによって異なる。--heでHEエンコードを選んだ場合、-v0(CVBRで可能な限り高いビットレート)がデフォルトで選択される。設定可能なチャンネル数と配置、サンプリング周波数、ビットレートの組み合わせは、次のコマンドで見ることができる。

qaac --formats

(訳注:2013年6月現在のqaac --formatsの出力内容を載せておきます。)

qaac.exe --format
LC 8000Hz Mono -- 8,12,16,20,24
LC 8000Hz Stereo -- 16,20,24,28,32,40,48
LC 8000Hz 3.0 (C L R) -- 24,27.999,31.998,39.999,48,55.998,63.999,72
LC 8000Hz 4.0 (L R Ls Rs) -- 32,40,48,56,64,72,80,96
LC 8000Hz 4.0 (C L R Cs) -- 32,40,48,56,64,72,80,96
LC 8000Hz 5.0 (C L R Ls Rs) -- 40,48,56,64,72,80,96,112
LC 8000Hz 5.1 (C L R Ls Rs LFE) -- 40,48,56,64,72,80,96,112
LC 8000Hz 6.0 (C L R Ls Rs Cs) -- 48,56,64,72,80,96,112,128,144
LC 8000Hz 6.1 (C L R Ls Rs Cs LFE) -- 48,56,64,72,80,96,112,128,144
LC 8000Hz 7.0 (C L R Ls Rs Rls Rrs) -- 56,64,72,80,96,112,128,144,160
LC 8000Hz 7.1 (C Lc Rc L R Ls Rs LFE) -- 56,64,72,80,96,112,128,144,160
LC 8000Hz 8.0 (C L R Ls Rs Rls Rrs Cs) -- 64,72,80,96,112,128,144,160,192
LC 11025Hz Mono -- 8,12,16,20,24,28,32
LC 11025Hz Stereo -- 16,20,24,28,32,40,48,56,64
LC 11025Hz 3.0 (C L R) -- 39.999,48,55.998,63.999,72,79.998,96
LC 11025Hz 4.0 (L R Ls Rs) -- 48,56,64,72,80,96,112,128
LC 11025Hz 4.0 (C L R Cs) -- 48,56,64,72,80,96,112,128
LC 11025Hz 5.0 (C L R Ls Rs) -- 64,72,80,96,112,128,144,160
LC 11025Hz 5.1 (C L R Ls Rs LFE) -- 64,72,80,96,112,128,144,160
LC 11025Hz 6.0 (C L R Ls Rs Cs) -- 72,80,96,112,128,144,160,192
LC 11025Hz 6.1 (C L R Ls Rs Cs LFE) -- 72,80,96,112,128,144,160,192
LC 11025Hz 7.0 (C L R Ls Rs Rls Rrs) -- 96,112,128,144,160,192,224
LC 11025Hz 7.1 (C Lc Rc L R Ls Rs LFE) -- 96,112,128,144,160,192,224
LC 11025Hz 8.0 (C L R Ls Rs Rls Rrs Cs) -- 96,112,128,144,160,192,224,256
LC 12000Hz Mono -- 12,16,20,24,28,32
LC 12000Hz Stereo -- 24,28,32,40,48,56,64
LC 12000Hz 3.0 (C L R) -- 39.999,48,55.998,63.999,72,79.998,96
LC 12000Hz 4.0 (L R Ls Rs) -- 48,56,64,72,80,96,112,128
LC 12000Hz 4.0 (C L R Cs) -- 48,56,64,72,80,96,112,128
LC 12000Hz 5.0 (C L R Ls Rs) -- 64,72,80,96,112,128,144,160
LC 12000Hz 5.1 (C L R Ls Rs LFE) -- 64,72,80,96,112,128,144,160
LC 12000Hz 6.0 (C L R Ls Rs Cs) -- 72,80,96,112,128,144,160,192
LC 12000Hz 6.1 (C L R Ls Rs Cs LFE) -- 72,80,96,112,128,144,160,192
LC 12000Hz 7.0 (C L R Ls Rs Rls Rrs) -- 96,112,128,144,160,192,224
LC 12000Hz 7.1 (C Lc Rc L R Ls Rs LFE) -- 96,112,128,144,160,192,224
LC 12000Hz 8.0 (C L R Ls Rs Rls Rrs Cs) -- 96,112,128,144,160,192,224,256
LC 16000Hz Mono -- 12,16,20,24,28,32,40,48
LC 16000Hz Stereo -- 24,28,32,40,48,56,64,72,80,96
LC 16000Hz 3.0 (C L R) -- 39.999,48,55.998,63.999,72,79.998,96,111.999,127.998,1
44
LC 16000Hz 4.0 (L R Ls Rs) -- 48,56,64,72,80,96,112,128,144,160,192
LC 16000Hz 4.0 (C L R Cs) -- 48,56,64,72,80,96,112,128,144,160,192
LC 16000Hz 5.0 (C L R Ls Rs) -- 64,72,80,96,112,128,144,160,192,224
LC 16000Hz 5.1 (C L R Ls Rs LFE) -- 64,72,80,96,112,128,144,160,192,224
LC 16000Hz 6.0 (C L R Ls Rs Cs) -- 72,80,96,112,128,144,160,192,224,256,288
LC 16000Hz 6.1 (C L R Ls Rs Cs LFE) -- 72,80,96,112,128,144,160,192,224,256,288
LC 16000Hz 7.0 (C L R Ls Rs Rls Rrs) -- 96,112,128,144,160,192,224,256,288,320
LC 16000Hz 7.1 (C Lc Rc L R Ls Rs LFE) -- 96,112,128,144,160,192,224,256,288,320

LC 16000Hz 8.0 (C L R Ls Rs Rls Rrs Cs) -- 96,112,128,144,160,192,224,256,288,32
0,384
LC 22050Hz Mono -- 16,20,24,28,32,40,48,56,64
LC 22050Hz Stereo -- 32,40,48,56,64,72,80,96,112,128
LC 22050Hz 3.0 (C L R) -- 48,55.998,63.999,72,79.998,96,111.999,127.998,144,159.
999,192
LC 22050Hz 4.0 (L R Ls Rs) -- 64,72,80,96,112,128,144,160,192,224,256
LC 22050Hz 4.0 (C L R Cs) -- 64,72,80,96,112,128,144,160,192,224,256
LC 22050Hz 5.0 (C L R Ls Rs) -- 80,96,112,128,144,160,192,224,256,288,320
LC 22050Hz 5.1 (C L R Ls Rs LFE) -- 80,96,112,128,144,160,192,224,256,288,320
LC 22050Hz 6.0 (C L R Ls Rs Cs) -- 96,112,128,144,160,192,224,256,288,320,384
LC 22050Hz 6.1 (C L R Ls Rs Cs LFE) -- 96,112,128,144,160,192,224,256,288,320,38
4
LC 22050Hz 7.0 (C L R Ls Rs Rls Rrs) -- 112,128,144,160,192,224,256,288,320,384,
448
LC 22050Hz 7.1 (C Lc Rc L R Ls Rs LFE) -- 112,128,144,160,192,224,256,288,320,38
4,448
LC 22050Hz 8.0 (C L R Ls Rs Rls Rrs Cs) -- 128,144,160,192,224,256,288,320,384,4
48,512
LC 24000Hz Mono -- 16,20,24,28,32,40,48,56,64
LC 24000Hz Stereo -- 32,40,48,56,64,72,80,96,112,128
LC 24000Hz 3.0 (C L R) -- 48,55.998,63.999,72,79.998,96,111.999,127.998,144,159.
999,192
LC 24000Hz 4.0 (L R Ls Rs) -- 64,72,80,96,112,128,144,160,192,224,256
LC 24000Hz 4.0 (C L R Cs) -- 64,72,80,96,112,128,144,160,192,224,256
LC 24000Hz 5.0 (C L R Ls Rs) -- 80,96,112,128,144,160,192,224,256,288,320
LC 24000Hz 5.1 (C L R Ls Rs LFE) -- 80,96,112,128,144,160,192,224,256,288,320
LC 24000Hz 6.0 (C L R Ls Rs Cs) -- 96,112,128,144,160,192,224,256,288,320,384
LC 24000Hz 6.1 (C L R Ls Rs Cs LFE) -- 96,112,128,144,160,192,224,256,288,320,38
4
LC 24000Hz 7.0 (C L R Ls Rs Rls Rrs) -- 112,128,144,160,192,224,256,288,320,384,
448
LC 24000Hz 7.1 (C Lc Rc L R Ls Rs LFE) -- 112,128,144,160,192,224,256,288,320,38
4,448
LC 24000Hz 8.0 (C L R Ls Rs Rls Rrs Cs) -- 128,144,160,192,224,256,288,320,384,4
48,512
LC 32000Hz Mono -- 24,28,32,40,48,56,64,72,80,96
LC 32000Hz Stereo -- 48,56,64,72,80,96,112,128,144,160,192
LC 32000Hz 3.0 (C L R) -- 72,79.998,96,111.999,127.998,144,159.999,192,223.998,2
55.999,288
LC 32000Hz 4.0 (L R Ls Rs) -- 96,112,128,144,160,192,224,256,288,320,384
LC 32000Hz 4.0 (C L R Cs) -- 96,112,128,144,160,192,224,256,288,320,384
LC 32000Hz 5.0 (C L R Ls Rs) -- 128,144,160,192,224,256,288,320,384,448
LC 32000Hz 5.1 (C L R Ls Rs LFE) -- 128,144,160,192,224,256,288,320,384,448
LC 32000Hz 6.0 (C L R Ls Rs Cs) -- 144,160,192,224,256,288,320,384,448,512,576
LC 32000Hz 6.1 (C L R Ls Rs Cs LFE) -- 144,160,192,224,256,288,320,384,448,512,5
76
LC 32000Hz 7.0 (C L R Ls Rs Rls Rrs) -- 192,224,256,288,320,384,448,512,576,640
LC 32000Hz 7.1 (C Lc Rc L R Ls Rs LFE) -- 192,224,256,288,320,384,448,512,576,64
0
LC 32000Hz 8.0 (C L R Ls Rs Rls Rrs Cs) -- 192,224,256,288,320,384,448,512,576,6
40,768
LC 44100Hz Mono -- 32,40,48,56,64,72,80,96,112,128,144,160,192,224,256
LC 44100Hz Stereo -- 64,72,80,96,112,128,144,160,192,224,256,288,320
LC 44100Hz 3.0 (C L R) -- 96,111.999,127.998,144,159.999,192,223.998,255.999,288
,319.998,384,447.999
LC 44100Hz 4.0 (L R Ls Rs) -- 128,144,160,192,224,256,288,320,384,448,512,576,64
0
LC 44100Hz 4.0 (C L R Cs) -- 128,144,160,192,224,256,288,320,384,448,512,576,640

LC 44100Hz 5.0 (C L R Ls Rs) -- 160,192,224,256,288,320,384,448,512,576,640,768
LC 44100Hz 5.1 (C L R Ls Rs LFE) -- 160,192,224,256,288,320,384,448,512,576,640,
768
LC 44100Hz 6.0 (C L R Ls Rs Cs) -- 192,224,256,288,320,384,448,512,576,640,768,9
60
LC 44100Hz 6.1 (C L R Ls Rs Cs LFE) -- 192,224,256,288,320,384,448,512,576,640,7
68,960
LC 44100Hz 7.0 (C L R Ls Rs Rls Rrs) -- 224,256,288,320,384,448,512,576,640,768,
960
LC 44100Hz 7.1 (C Lc Rc L R Ls Rs LFE) -- 224,256,288,320,384,448,512,576,640,76
8,960
LC 44100Hz 8.0 (C L R Ls Rs Rls Rrs Cs) -- 256,288,320,384,448,512,576,640,768,9
60,1280
LC 48000Hz Mono -- 32,40,48,56,64,72,80,96,112,128,144,160,192,224,256
LC 48000Hz Stereo -- 64,72,80,96,112,128,144,160,192,224,256,288,320
LC 48000Hz 3.0 (C L R) -- 96,111.999,127.998,144,159.999,192,223.998,255.999,288
,319.998,384,447.999
LC 48000Hz 4.0 (L R Ls Rs) -- 128,144,160,192,224,256,288,320,384,448,512,576,64
0
LC 48000Hz 4.0 (C L R Cs) -- 128,144,160,192,224,256,288,320,384,448,512,576,640

LC 48000Hz 5.0 (C L R Ls Rs) -- 160,192,224,256,288,320,384,448,512,576,640,768
LC 48000Hz 5.1 (C L R Ls Rs LFE) -- 160,192,224,256,288,320,384,448,512,576,640,
768
LC 48000Hz 6.0 (C L R Ls Rs Cs) -- 192,224,256,288,320,384,448,512,576,640,768,9
60
LC 48000Hz 6.1 (C L R Ls Rs Cs LFE) -- 192,224,256,288,320,384,448,512,576,640,7
68,960
LC 48000Hz 7.0 (C L R Ls Rs Rls Rrs) -- 224,256,288,320,384,448,512,576,640,768,
960
LC 48000Hz 7.1 (C Lc Rc L R Ls Rs LFE) -- 224,256,288,320,384,448,512,576,640,76
8,960
LC 48000Hz 8.0 (C L R Ls Rs Rls Rrs Cs) -- 256,288,320,384,448,512,576,640,768,9
60,1280
HE 32000Hz Mono -- 12,16,24,32,40
HE 32000Hz Stereo -- 24,32,40,48,56,64,80
HE 32000Hz 4.0 (L R Ls Rs) -- 48,56,64,80,96,112,128,160
HE 32000Hz 5.1 (C L R Ls Rs LFE) -- 64,80,96,112,128,160,192
HE 32000Hz 7.1 (C Lc Rc L R Ls Rs LFE) -- 96,112,128,160,192,224,256
HE 44100Hz Mono -- 16,24,32,40
HE 44100Hz Stereo -- 32,40,48,56,64,80
HE 44100Hz 4.0 (L R Ls Rs) -- 64,80,96,112,128,160
HE 44100Hz 5.1 (C L R Ls Rs LFE) -- 80,96,112,128,160,192
HE 44100Hz 7.1 (C Lc Rc L R Ls Rs LFE) -- 112,128,160,192,224,256
HE 48000Hz Mono -- 16,24,32,40
HE 48000Hz Stereo -- 32,40,48,56,64,80
HE 48000Hz 4.0 (L R Ls Rs) -- 64,80,96,112,128,160
HE 48000Hz 5.1 (C L R Ls Rs LFE) -- 80,96,112,128,160,192
HE 48000Hz 7.1 (C Lc Rc L R Ls Rs LFE) -- 112,128,160,192,224,256
HE 88200Hz Mono -- 32,40,48,56,64,80,96,112,128,160
HE 88200Hz Stereo -- 64,80,96,112,128,160,192,224,256,320
HE 88200Hz 4.0 (L R Ls Rs) -- 128,160,192,224,256,320,448,640
HE 88200Hz 5.1 (C L R Ls Rs LFE) -- 160,192,224,256,320,448,640
HE 88200Hz 7.1 (C Lc Rc L R Ls Rs LFE) -- 224,256,320,448,640,1120
HE 96000Hz Mono -- 32,40,48,56,64,80,96,112,128,160
HE 96000Hz Stereo -- 64,80,96,112,128,160,192,224,256,320
HE 96000Hz 4.0 (L R Ls Rs) -- 128,160,192,224,256,320,448,640
HE 96000Hz 5.1 (C L R Ls Rs LFE) -- 160,192,224,256,320,448,640
HE 96000Hz 7.1 (C Lc Rc L R Ls Rs LFE) -- 224,256,320,448,640,1120


--qualityも品質を変えるオプションなのでややこしいが、前のほうのダイアログででてきた「品質」と同じものである。これはファイルサイズではなく、エンコード速度と品質のトレードオフを行う。0,1,2を指定できる。大きい値はより高い品質であり、エンコード速度は遅くなる。デフォルトでは、qaacは2(最高品質、遅い)を使う。


参考までに、iTunesのインポート(CD取り込み)設定と同じことをするためのqaacの設定方法。(2011/10/11、iTunes 10.4.1現在)

高音質(128k) -a128 -q1
iTunes Plus(256k) -v256 -q2
カスタム (VBR on) -v -q2
カスタム (VBR off) -a -q2

このように、iTunesはABRかCVBRしか使っていない。iTunes Plusと同じファイルを得るためには、-v256 -q2を指定してください。(-q2はデフォルトなので、実際は-v256だけで足りる。)

読めるファイル形式

qaacは生PCM、WAC、ALAC、MP3やその他のApple AudioFile serviceでサポートされているリニアPCM系のフォーマットを開くことができます。また、qaacはキューシートを読み込むこともできます。


libsndfile-1.dllがqaacと共にインストールされている場合、qaacはlibsndfileでサポートされているさらに多くのPCMフォーマットを開くことができます。同様に、libFLAC.dllをインストールすると、FLACを開くことができますし、wavpackdll.dllをインストールするとWavPack(.wv)を読むことができます。

基本的に、入力フォーマットはqaacが自動的に判断します。なので、入力がどんなフォーマットであるかは普通意識する必要はなく、別途指定する必要もありません。しかしながら、生PCMを入力する場合は、-R (--raw)オプションやその他の属性などを指定をする必要があります。

--ignorelengthも入力に関するオプションです。もし入力ファイルがWAVで--ignorelengthが指定されている場合、qaacはWAVヘッダーに指定されている長さ("data"チャンクの長さ)を無視します。

複数の入力やキューシートの扱い

qaacには複数の入力ファイルを食わせることができます。標準ワイルドカード(*と?)が使用可能です。しかし、注意するべきは、エンコーダ設定やタグオプションは全ての入力ファイルに適用されるということです。

基本的に、入力されたそれぞれのファイルは別々のファイルにエンコードされます。そのため、入力ファイルと出力ファイルは1:1の関係にあります。しかし、キューシートを入力した場合と、--concatを指定した場合は異なります。

--concatが指定された場合、qaacは全ての入力ファイルを単一のファイルにまとめてエンコードします。このケースでは、それぞれの入力トラックの位置を示すチャプターが生成されます。アルバム関係のタグは最初の入力ファイルから取られます。

例えば、"01 first track.flac", "02 second track.flac" .... というファイルがフォルダの中にあるとする。これらのファイルを1個のチャプター付きのアルバムイメージファイル、にしたい場合、このようにしてできます。

qaac -V63 --concat *.flac -o output.m4a

キューシートを入力ファイルとして指定した場合、qaacはデフォルトでキューシート中のそれぞれのトラックを別々にエンコードします(1トラックにつき1ファイル)。キューシートは単一のオーディオファイル(イメージ)を指すのかもしれないし、複数のファイルを指すかもしれない。しかし、qaacは"FILE"コマンドライン中のファイルが実際のファイル名であることを必要とします。もし"foo.flac"ファイルがあるなら、"foo.wav"をキューシートに持つことはできません。

--concatが指定された場合、cuesheetトラックも単一の出力ファイルにつなぎ合わされます。キューシートにあるようにチャプターが生成されます。

m4aやWAV出力の場合、異なるサンプルフォーマット(サンプリング周波数など)をもつ複数のファイルを結合することはできません、一方で、ADTS出力はそのようなケースを受け入れ、複数のフォーマットからなるストリームを生成します。

出力フォーマット

デフォルトでは、qaacはAACとALAC出力のためにm4aを使います。特に-oでファイル名を指定しなければ、出力ファイル名は入力ファイル名から自動生成されます。

AACエンコードする場合、--adtsを指定してm4aの代わりにADTSファイルを出力することもできます。ADTSは、タグを保存できない・シーキングが非効率などの理由で楽曲の保存には向かないフォーマットですが、ストリーミング可能なフォーマットであり、ADTSであればstdoutに出力することもできます。

-Dでデコードモードを指定すると、WAVファイルが出力されます。WAV出力にはstdoutも使うことができます。

m4aにエンコードするとき、--no-optimizeオプションも指定することができます。デフォルト(--no-optimizeを使わない場合)では、qaacは次のように動きます。

foo.wav -----> 一時ファイル ------> foo.m4a
        エンコード          最適化

この「最適化」は、foobar2000コンテキストメニューコマンドにある"Optimize MP4 layout"と同じことをします。MP4コンテナの再レイアウトをします。

出力ビット深度

ALACまたはWAVを出力する場合、-bで出力ビット深度を指定することができます。普通、出力ビット深度は入力ビット深度と同じです。しかしながら、DSPフィルターの類を適用した場合、内部フォーマットは浮動小数点フォーマットに変換されることがあります。その場合、-bを指定しなければ32bit float WAVファイルが出力されます。

一方で、ALACに出力する場合、出力の前に内部フォーマットは自動的に整数に変換されます。

ALAC出力の場合、16bit, 20bit, 24bit, 32bitが使用できます。WAV出力の場合、2から32までの任意のbitが使えます。WAVでは、-b 32は浮動小数点フォーマットを意味します。

ビット深度が-bで減少させられ、最終ビット深度が18よりも少ない場合、qaacはデフォルトでTPDFディザーを適用します。必要なければ、--no-ditherを使ってください。

一般的なオプション解釈ルール

qaac.exeはユニコード版のBSD getoptをコマンドラインパーサーとして使います。そのためqaacのコマンドラインオプションの扱いは標準的なCLI アプリケーションまたはコマンドと同じです。もしあなたが長年のUnixユーザーでしたら、すでに説明するまでもないでしょう。

qaacは一つ以上のオプションを受け取り、エンコードに使う入力ファイルを指定する一つ以上の引数を受け取ります。オプションは省略することができますが、入力ファイル引数は常に必要です。--check以外は。(--checkには入力ファイルは必要ありません。)

独立したオプションの順番は重要ではありません。次のコマンドライン2行は同じことを指定しています。

qaac -A input.wav -o output.m4a

qaac -o output.m4a input.wav -A


ここには2種類のオプションが存在します。
-Aのようなオプションは短いオプションです。-から始まり、一文字の名前を持ちます。
--adtsのようなオプションは長いオプションです。--から始まり、長い名前を持ちます。どちらのオプションを使っているのかは注意する必要があります。--adtsの代わりに-adtsとすることはできません。

オプションは引数を必要とするものがあります。例えば-A(ALAC出力)に引数は必要ありませんが、-oには引数が必要です。引数として出力ファイル名を指定する必要があります。

引数が必要な場合、-o foo.m4aのように指定します。-oがオプション、foo.m4aが引数で、スペースにより区切られていますが、これは短いオプションの場合必要ありません。-ofoo.m4aのようにできます。

長いオプションの場合、--tvbr 127または--tvbr=127とできます。ここで、オプションと引数はスペースまたは"="で区切られていて、省略することはできません。

-Aのような短いオプションは、一つのtokenに合併できます。-A -o foo.mp4の代わりに-Aofoo.mp4とも指定できます。

便利なDSPオプション

qaacは以下のDSPオプションに対応しています。

  • ローパスフィルター(--lowpass)
  • サンプリング周波数変換(--rate)
  • ノーマライズ(-N)
  • 音量調整(--gain)
  • チャンネル並び替え(--chanmap)
  • マトリックスミキサー(--matrix-preset, --matrix-file)
  • ディレイ(--delay)
  • ビット深度変換(--bits-per-sample)

--rate、--lowpass、--matrix-preset、--matrix-file はlibsoxrateを必要とします。

-N、--gain、--matrix-preset、-matrix-file、--rate、--lowpassを適用すると内部フォーマットはfloatに変換されることに注意してください。WAVかALACのビット深度に合わせたい場合、-bを使ってください。ALACの場合は、これらのDSPが適用された場合は出力は自動的に再量子化されます。

また、チャンネルは内部的に、自動的に再並び替えされます。まず、チャンネルはマイクロソフトの順番(例えばL C R がL R Cに)に並び替えられ、そしてAACやALACにエンコードされる前、再びAACの順番に並び替えられます(例えば C L R)。もちろん、この再並び替えは入力のチャンネルレイアウトが分かっている場合のみ動きます。もしチャンネルレイアウトが分からない場合、qaacはマイクロソフトの順番とみなして動きます。--chanmapと--chanmaskを使ってqaacにチャンネルレイアウトを知らせることができます。

DSPチェーンは以下の順番で処理されます。見てわかるように、マトリックスミキサーと--chanmapが処理される場合、チャンネルはマイクロソフト WAVの順番になっています。これらのオプションを使うときはそれを考慮に入れる必要があります。

  1. ディレイ
  2. マイクロソフトの順番に並び替え
  3. マトリックスミキサー
  4. --chanmapでのチャンネル並び替え
  5. AACの順番への並び替え(AAC/ALAC)
  6. サンプリング周波数変換
  7. ローパスフィルター
  8. ノーマライズ
  9. ゲイン調整
  10. ビット深度変換

サンプリング周波数変換

サンプリング周波数変換は次の場合に行われます。

  • --rate 44100のように、明示的に--rateを指示した場合
  • AACエンコードする場合で、入力サンプリング周波数が規格外となる場合、またはエンコーダがダウンサンプリングするべきと判断した場合

デフォルトでは、qaacは--rate=keepが指定されたかのように動きます。--rate keepは入力と同じサンプリング周波数を保つようにします。

一方、--rate autoはエンコーダに最適なサンプリング周波数を決定させます。これは、ビットレートが低い場合に挙動が変わってきて、--rate keepを指定した場合よりも低いビットレートが使えるようになります。

qaacは、libsoxrate の SoX rate converter をデフォルトで選びます。libsoxrがある場合、libsoxrateよりも優先されます。どちらもない場合や--native-resamplerを指定した場合、qaacはCoreAudio sample rate converterを使います。

libsoxrate と libsoxr は、どちらも非常に高速で高品質とされる SoX の周波数変換アルゴリズムを基にしています。libsoxrateに比べて、libsoxrはより最適化されています。単精度モードのlibsoxrはSIMDに対応した環境ではSIMDを使うことができます。qaacは普通単精度モードを選びますが(高品質モード)、入力フォーマットがint32またはfloat64の場合、qaacはさらに高精度だが遅い倍精度モード(超高品質モード)を使います。一方、オリジナルのSoXとオリジナルのlibsoxr は倍精度モードのみを提供します。

--native-resamplerはサンプリング周波数変換の複雑さと品質をコントロールするオプションの引数をとることができます。オプションの引数なしの場合、コーデックのデフォルトのサンプリング周波数変換が使われます。もし引数が指定された場合、qaacは専用の、設定変更可能なAudioConverterをサンプリング周波数変換に使います。他のオプションとは異なり、--native-resamplerは'='を区切り文字とし、スペースを区切りとすることはできません。複雑さはline、norm、bats、そして品質は0から127の間の整数を取れます。複雑さと品質は','(コンマ)で区切る必要が有ります。

サンプリング周波数変換の複雑さ
line リニア(もっとも悪い、完全性のためだけに含まれている。使わないでください。)
norm 標準
bats マスタリング(最高、ただしかなり遅い)
--native-resampler コーデックのデフォルトの変換を使う
--native-resampler=bats,127 複雑さ:bats(マスタリング) 品質:127(最高)
--native-resampler=bats 複雑さ:bats デフォルトの品質が使われます
--native-resampler=96 複雑さ:デフォルト 品質:96

マトリックスミキサー

--matrix-presetや--matrix-fileオプションを使って、完全にカスタマイズ可能なマトリックスミキサーを使うことができます。両方とも、マトリックスの仕様を書いたテキストファイルを準備する必要があります。

--matrix-fileでマトリックスファイルのパス名を渡すことができます。一方、--matrix-presetは予め定義されたディレクトリからファイルを探してきます。オプションの名前が示唆するように、あなた自身のプリセットファイルを作って名前で指定できるようにデザインされています。

--matrix-preset=fooは以下の順番でfoo.txtというファイルを探します。

1. %HOME%\.qaac\matrix\foo.txt (%HOME% は環境変数です。 ドットがqaacの前に存在することに注意)
2. %APPDATA%\qaac\matrix\foo.txt (%APPDATA% はログインしたユーザーのアプリケーションデータディレクトリです。ドットはありません。)
3. (qaacがあるディレクトリのパス)\matrix\foo.txt

テキストのファイルフォーマットはとてもシンプルで、次のように指定できます。

1 0 0.7071
0 1 0.7071

これは2x3のマトリックスで、3チャンネルから2チャンネルにダウンミックスする場合に使えます。それぞれの行は出力チャンネル(LとR)に対応します。同様に、それぞれの列は入力チャンネル(LとRとC)に対応します。列と列の間は一つか複数のスペースまたはタブで区切ります。

このマトリックスで、出力チャンネルはそれぞれ入力チャンネルから次のように計算されます。
L = 1 * L + 0 * R + 0.7071 * C
R = 0 * L + 1 * R + 0.7071 * C
実際には、それぞれのマトリックスの係数はクリップを防ぐために自動で"規格化"されます。というのは、それぞれの出力チャンネルに対応する係数の合計が1になるようにスケールされるということです。次の公式がスケールの方法を示します。
M_{ij} = \frac{M_{ij}}{abs(M_{i1}) + abs(M_{i2}) +...+ abs(M_{in})}
M_{ij}マトリックス係数です。

この自動スケーリングを止めるには--no-matrix-normalizeオプションを使います。

さらに例を示します。

1 0 0.7071 0 -0.87178j -0.4899j
0 1 0.7071 0 0.4899j 0.87189j

これは2x6のマトリックスですので、6チャンネルを2チャンネルにダウンミックスするのに使えます。

ここで、"j"のついた虚数が使われています。それぞれの係数に、実数を使うこともできれば、jで純虚数を使うこともできます。実数の値はチャンネルの音量を表し、虚数の値は90度の位相シフトを表します。

もし位相シフトの効果だけを実現したい場合、次のようなマトリックスを試してください。

1j

この1x1のマトリックスはモノラル入力からモノラル出力に、ヒルバート変換と呼ばれる90度の位相シフトを適用します。

qaacはリミックスされた結果に対して常にデフォルトのチャンネルレイアウトを使うことに注意してください。もし他のレイアウトを使いたい場合、--chanmaskを使って希望するチャンネルレイアウトを知らせてください。

制限

虚数単位を単にjと書くことはできません。1j または1.0j を使ってください。これは現在の字句解析器の実装にある制限のためです。

同じ入力チャンネル(列)に、ゼロ以外の実数と虚数を両方指定することはできません。

0.5j
0.5j

0.5j
0

上のマトリックスは正常です。しかし、

0.5j
0.5

これは許されていません。これは実装の理由によるものです。実用的な用途もないでしょう。

マルチチャンネルの扱い

モノラルとステレオに加えて、以下のチャンネルレイアウトがAACとALACで対応していますが、わずかに異なる点があります。チャンネルレイアウトが不明な場合、*のついたレイアウトが適用されます。

# 入力レイアウト 出力レイアウト
3ch(ALAC only) * FL FR FC C L R
4ch FL FR FC BC C L R Cs
4ch FC FLC FRC BC C L R Cs
4ch * FL FR BL BR L R Ls Rs
4ch FL FR SL SR L R Ls Rs
5ch * FL FR FC BL BR C L R Ls Rs
5ch FL FR FC SL SR C L R Ls Rs
5.1ch * FL FR FC LF BL BR C L R Ls Rs LFE
5.1ch FL FR FC LF SL SR C L R Ls Rs LFE
6ch FL FR FC BL BR BC C L R Ls Rs Cs
6ch FL FR FC BC SL SR C L R Ls Rs Cs
6.1ch * FL FR FC LF BL BR BC C L R Ls Rs Cs LFE
6.1ch FL FR FC LF BC SL SR C L R Ls Rs Cs LFE
7ch FL FR FC BL BR SL SR C L R Ls Rs Rls Rrs
7.1ch FL FR FC LF BL BR FLC FRC C Lc Rc L R Ls Rs LFE
7.1ch FL FR FC LF FLC FRC SL SR C Lc Rc L R Ls Rs LFE
7.1ch * FL FR FC LF BL BR SL SR C Lc Rc L R Ls Rs LFE
8ch FL FR FC BL BR BC SL SR C L R Ls Rs Rls Rrs Cs
注意点
  • 3チャンネルのAACはCoreAudioToolbox.dllバージョン7.9.8.1(訳注:iTunes 10.7に付属)からサポートされました。
  • 4ch(C L R Cs), 5ch, 6ch, 6.1ch, 7ch, 8chはHE-AACエンコーダでサポートされていません。HE-AACエンコーダが対応するのは、4ch(quad), 5.1ch, 7.1chです。
  • ALACは3ch, 4ch(C L R Cs), 5ch, 5.1ch, 6.1ch, 7.1chに対応します。
  • 1.1ch等、その他のレイアウトは入力としてはサポートされていますが、AAC/ALACエンコードに使うことはできません。WAV出力は可能で、最大のチャンネル数は8です。
  • チャンネルレイアウトが同じである限り、入力チャンネルの順番は何でも構いません。例えば、"C L R"(ALACで使われる)は上記の表にはありませんが、FL FR FCとは順番が異なるだけなので、利用可能です。チャンネルは正しく並び替えられます。マイクロソフトWAVフォーマットでは、同じレイアウトのチャンネルは常に同じ順番です。AIFFやCAFはその他の順番で入っていることもあります。
  • QuickTime(とAdobe Audition)は SL/SR を Lsd/Rsd、BL/BR を Ls/Rs に割り当てています。しかし、Ls/RsとRls/RrsはDolby(とQuickTime)でよく好まれて使われるのですが、Rls/Rrsという割り当てに相当するものはWAVにはありません。qaacはこの種の割り当て問題を解決しようとします。
略記の意味
  1. Front Left - FL, L
  2. Front Right - FR, R
  3. Front Center - FC, C
  4. Low Frequency - LF, LFE
  5. Back Left - BL
  6. Back Right - BR
  7. Front Left of Center - FLC, Lc
  8. Front Right of Center - FRC, Rc
  9. Back Center - BC
  10. Side Left - SL
  11. Side Right - SR
  12. Left Surround Direct - Lsd
  13. Right Surround Direct - Rsd
  14. Left Surround - Ls
  15. Right Surround - Rs
  16. Rear Left Surround - Rls
  17. Rear Right Surround - Rrs
  18. Center Surround - Cs

タグ・オプション

ほとんどのタグ付けオプションは--titleや--artistなど分かりやすい名前ですが、qaacは二つの一般用タグオプションがあります。--tagと--long-tagです。これらは便利ですがエラーを起こしやすいです。ただアーティスト名をタグに設定したい場合は、--artistを使ってください。

--tagオプション

--tag :

iTunesが定義する4文字のFourCC識別子を設定します。詳しくは、mp4v2 documentをご覧ください。例えば、以下の:

--tag "soar:suzanne vega"

sort artistというタグに、suzanne vegaという値を設定するという意味です。「sort 〜」はiTunes特有のタグです。

stik や sfID などのタグは、IDの数字の値を持ちます。このようなタグは、数字を明示して渡すか、対応する文字列名を指定できます。sfID (iTMSの国コード)の場合は、国名か mp4v2 document に指定された ISO 3166-1 alpha-3 Codeが使用できます。

あと、stikうんぬんのところの文章はちょっと分かりにくかったかもしれませんが、mp4v2のサイトの表にあるように、これらのタグは数字のIDに文字列の値が対応していて、どっちで入れてもいいですよという意味です。実際にファイルにタグとして格納されるのは数字のほうです。


--long-tagオプション

--long-tag :

は、任意のタグに使えます。

チャプター

チャプターは--concatを指定した場合は自動的に生成されます。入力ファイルに埋め込まれたキューシートやチャプターがある場合も同様です。qaacはQuickTimeスタイルのチャプターフォーマット(TEXTトラックとして施行されている)とNeroスタイルのチャプターフォーマットの両方を生成します。

    • chapterオプションとテキストファイルでチャプターを作ることもできます。チャプターファイルは次のようなフォーマットのいずれかです。

スタイル1

00:00:00.000 Prologue
00:00:19.987 Opening
00:01:50.160 Episode Blablabla
00:21:54.530 Ending
00:23:24.453 Preview

スタイル2

Chapter01=00:00:00.000
Chapter01NAME=Directed by Charles Chaplin
Chapter02=00:01:10.000
Chapter02NAME=Electro Steel Corp.
Chapter03=00:06:05.000

タイムスタンプフォーマットはHH:MM:SS.SSSSS...で、HHは時間、MMは分SSは小数つきの秒で、ケタ数はいくつでもかまいません。

内部的には、QuickTimeチャプターフォーマットはオーディオトラックと同じタイムスケールを使えるので、サンプル単位となります。一方、Neroスタイルのチャプターは常に100ナノ秒です。十分な精度でしょう。

ファイル名を自動生成するための設定

qaacは自動的に出力ファイル名を、入力ファイル名かタグから生成します。--concatなしのキューシート入力の場合、タグが常に使われます。そうでなければ、入力ファイル名がデフォルトで使われます。--fname-from-tagオプションを使うと、タグを基にしたファイル名生成を強制することができます。


https://github.com/nu774/qaac/wiki/Configuring-auto-generated-filenames
(2013/10/02 23:37ここまで翻訳)

FDK-AACが使えるFFmpegのビルド

64bit Windows上でFDK-AACが使えるFFmpegを作る方法。FDK-AACは、2013年6月現在、FFmpegに組み込んで使える中では最高品質のAACエンコーダ。


まず、64bit Windowsで使えるビルド環境(MinGW + MSYS)をダウンロードします。
ちなみに、実行ファイルは32bitになります。
http://xhmikosr.1f0.de/tools/



赤丸のファイル(MSYS_MinGW-w64_GCC_481_x86-x64_Full.7z, 約60MB)を落としたら、7zファイルを開ける解凍ソフトで展開してください。



展開すると、ファイルmsys.batがMSYSフォルダの中にあるので、ダブルクリックします。



すると、Linuxの端末(sh)風のコマンドを実行できるウィンドウが開きますので、これから、ビルドのための命令をここで実行することになります。
一旦ウィンドウを閉じてください。


次に、FDK-AACのインストールをします。
http://sourceforge.net/projects/opencore-amr/files/fdk-aac/

最新版のFDK-AACをダウンロードします。わかりやすい位置、例えばCドライブ直下にFFmpegというフォルダを作って、そこにダウンロードしたfdk-aac-0.1.1.tar.gzを移動してください。ついでにMSYSフォルダも同じフォルダに移動しておきましょう。MSYSフォルダの中のmsys.batをもう一度ダブルクリックします。


次に、

cd (作ったフォルダのパス)
ls
と入力してください。lsと入力した後に、fdk-aac-0.1.1.tar.gzがあれば合格です。ここら辺はまさにLinux的な操作ですね。


次に、

tar xzf fdk-aac-0.1.1.tar.gz
と入力してください。これで、tar.gzが解凍され、fdk-aac-0.1.1というフォルダができます。


次に、

cd fdk-aac-0.1.1と入力してください。カレントフォルダが今C:\FFmpegなら、これでC:\FFmpeg\fdk-aac-0.1.1に移動します。


次に、
./configure --prefix=/mingw/i686-w64-mingw32
と入力してください。この操作は時間がかかります。少し待つと、以下のようになるはずです。


次に、
make
最後に、
make install
と入力。これでFDK-AACコンパイルとインストールが終わりました。

できたFDK-AACは、MSYSフォルダの中の、mingwフォルダの中の、i686-w64-mingw32フォルダの中の、bin、include、libフォルダの中にそれぞれ格納されています。更新日時を見ると、どれが新しくできたファイルか分かります。



次に、FFmpegをダウンロードします。
http://ffmpeg.org/download.html

にアクセスして、赤丸のリンクからダウンロードします。ダウンロードしたら、MSYSと同じフォルダに移動しておきます。


次に、ウィンドウから、
cd ../
と入力。これでカレントフォルダが一つ戻る。次に、

tar xzf ffmpeg-HEAD-4110828.tar.gz
と入力。4110828のところは、実際にダウンロードしてきた名前にしてください。ちなみに、前に入力したコマンドと似たようなコマンドを入力するには、キーボードの↑キーを押すと過去の履歴がでますので、それを使ってください。


次に、
cd ffmpeg-HEAD-4110828
と入力。やはりここも、実際にダウンロードしてきた名前にしてください。
次に、
./configure --enable-gpl --enable-version3 --enable-nonfree --enable-libfdk-aac --extra-ldflags=-static --extra-cflags='-march=native -mfpmath=sse' --optflags=-O2
と入力。この作業は2分ほどかかります。終わると、

となります。-march=nativeは、あなたが今使っているCPUで使える命令をフルに活用する、ということです。そのため、できたバイナリは新しい命令に対応していない古いPCで実行できないことがあります(その場合、プログラムが強制終了する)。-march=noconaにすると、Pentium D(2006)以降のPCで動くはずですが、画面にあるとおり、この作業でできるバイナリはFDK-AACを含むので再配布不可能です。


次に、
make
と入力。この作業は15分ほどかかるはずですが、これが最後です。終わったら、ffmpeg.exeがffmpegフォルダの中にあるはずです。


あった! ffmpeg.exe!


作成に当たっては、
http://blog.k-tai-douga.com/category/352503-1.html
http://looooooooop.blog35.fc2.com/blog-entry-968.html
を参考にさせてもらいました。

MP3 224kbpsの音質比較

概要

224kbps付近でエンコードしたときのMP3エンコーダの音質比較。
ドイツ人のhalb27氏が2013年2月にリリースしたLAMEエンコーダの拡張版であるLAME 3.100i V2+、2013年6月現在最新版のLAME 3.99.5 V1、一世代前のLAME 3.98.4 CBR 224kbps、超高速エンコードで知られる2005年のオープンソースMP3エンコーダHelix mp3enc v5.1、そしてビリ基準として2001年のMP3エンコーダ、BladeEnc v0.94.2 CBR 224kbpsをテスト。

結果

ビリ基準であるBladeEncを除いて、どれもほぼ同程度の平均評点となった。上記の条件で様々なジャンルの音源をエンコードした場合、これらの4種のエンコーダの音質に大きな違いはない。

評価

エンコーダ LAME LAME LAME Helix Blade
バージョン 3100i 3.99.5 3.98.4 5.1 0.94.2
リリース年 2013 2012 2009 2005 2001
レート制御 VBR VBR CBR VBR CBR
ビットレート V2+ V1 224k V146 224k
41_30sec 打楽器 4.7 4.6 4.0 4.3 3.1
finalfantasy 撥弦楽 4.3 4.2 4.6 4.8 3.8
ATrain ジャズ 4.5 4.5 4.4 5.0 4.7
BigYellow POPS 4.8 5.0 4.6 5.0 4.3
FloorEssence テクノ 4.7 4.5 4.2 4.4 3.5
macabre オケ 4.7 4.3 5.0 4.6 4.5
mybloodrusts 弦楽器 4.4 5.0 3.8 4.7 3.9
Quizas ラテン 4.2 4.5 4.4 4.5 3.8
VelvetRealm テクノ 4.3 4.2 4.0 4.5 3.2
雨降花 POPS 4.4 4.3 5.0 4.6 3.4
Trust Gosp 4.0 4.3 4.5 4.6 3.5
Waiting ロック 4.5 4.2 4.4 4.6 3.6
Experiencia ラテン 4.2 4.5 5.0 4.7 4.0
HeartToHeart POPS 4.3 4.1 4.3 4.1 3.5
Tom's Diner 女声 4.2 4.2 4.4 4.6 3.9
ReunionBlues ジャズ 5.0 4.5 5.0 5.0 4.1
French 男女声 5.0 4.3 4.7 4.4 4.0
undelete POPS 4.5 4.4 4.2 4.0 3.2
Dimmu Borgir メタル 5.0 5.0 5.0 4.5 4.4
Run up POPS 5.0 5.0 4.7 5.0 4.4
German 男声 5.0 4.8 4.8 4.6 4.2
ItCouldBeSweet POPS 4.7 5.0 5.0 4.5 3.9
ontheroofwith POPS 4.8 5.0 5.0 4.6 4.2
easy game POPS 5.0 5.0 4.7 5.0 4.2
Tears Infection POPS 4.4 4.1 4.6 4.4 4.1
↑音源 平均点 4.58 4.54 4.57 4.60 3.90
実レート 235k 228k 225k 221k 224k
全サイズ(KB) 17232 16606 16448 16210 16412
エンコーダ LAME LAME LAME Helix Blade
バージョン 3100i 3.99.5 3.98.4 5.1 0.94.2

テストに利用した音源を試聴したい方、ダウンロードしたい方、ログを見たい方はこちらへ。
http://zak.s206.xrea.com/bitratetest/main.htm
[file:kamedo2:bitratetest_wav30-34.zip]

方法

銘柄に対する先入観が影響しないように、PSP ABC/HR v2.4とRP-HT560を利用して、5個のエンコードされたMP3をランダムに並び替えて、銘柄を伏せて採点した。1=音質劣化が非常に気になる 2=気になる 3=少し気になる 4=原音からの音質変化が分かるが、気にならない 5=音質変化がわからない、区別できない。4.9点以下の評点をつける場合は、ABXYテストを20回行い、15回以上(これ以上の成績をまぐれで出す確率は約2%)正解して、違いを聞き取れることを確認してからそうした。このテストでの採点は、25(音源)×5(エンコーダ)×1(回)=125(回)。

使用したオプション

LAME3100i -V2+
LAME3.99.5 -V1
LAME3.98.4 -S -q 0 -b 224
Helix -X2 -U2 -V146
BladeEnc -224

詳細な優劣の分析

FRIEDMAN version 1.24 (Jan 17, 2002) http://ff123.net/
Blocked ANOVA analysis

Number of listeners: 25
Critical significance:  0.05
Significance of data: 0.00E+000 (highly significant)
---------------------------------------------------------------
ANOVA Table for Randomized Block Designs Using Ratings

Source of         Degrees     Sum of    Mean
variation         of Freedom  squares   Square    F      p

Total              124          23.56
Testers (blocks)    24           7.75
Codecs eval'd        4           9.24    2.31   33.80  0.00E+000
Error               96           6.56    0.07
---------------------------------------------------------------
Fisher's protected LSD for ANOVA:   0.147

Means:

Helix-V1 3.100iV2 3.98CBR  3.99V1   BladeEnc
  4.60     4.58     4.57     4.54     3.90

---------------------------- p-value Matrix ---------------------------

         3.100iV2 3.98CBR  3.99V1   BladeEnc
Helix-V1 0.829    0.706    0.419    0.000*
3.100iV2          0.871    0.553    0.000*
3.98CBR                    0.666    0.000*
3.99V1                              0.000*
-----------------------------------------------------------------------

Helix-V146 is better than BladeEncCBR
3.100iV2+ is better than BladeEncCBR
3.98CBR is better than BladeEncCBR
3.99V1 is better than BladeEncCBR

整形済みデータ

% MP3 224kbps ABC/HR Score
% This format is compatible with my graphmaker, as well as ff123's FRIEDMAN.
3.100iV2+	3.99V1	3.98CBR	Helix-V146	BladeEncCBR
%feature 7 LAME LAME LAME Other Other	
4.700	4.600	4.000	4.300	3.100	
4.300	4.200	4.600	4.800	3.800	
4.500	4.500	4.400	5.000	4.700	
4.800	5.000	4.600	5.000	4.300	
4.700	4.500	4.200	4.400	3.500	
4.700	4.300	5.000	4.600	4.500	
4.400	5.000	3.800	4.700	3.900	
4.200	4.500	4.400	4.500	3.800	
4.300	4.200	4.000	4.500	3.200	
4.400	4.300	5.000	4.600	3.400	
4.000	4.300	4.500	4.600	3.500	
4.500	4.200	4.400	4.600	3.600	
4.200	4.500	5.000	4.700	4.000	
4.300	4.100	4.300	4.100	3.500	
4.200	4.200	4.400	4.600	3.900	
5.000	4.500	5.000	5.000	4.100	
5.000	4.300	4.700	4.400	4.000	
4.500	4.400	4.200	4.000	3.200	
5.000	5.000	5.000	4.500	4.400	
5.000	5.000	4.700	5.000	4.400	
5.000	4.800	4.800	4.600	4.200	
4.700	5.000	5.000	4.500	3.900	
4.800	5.000	5.000	4.600	4.200	
5.000	5.000	4.700	5.000	4.200	
4.400	4.100	4.600	4.400	4.100	
%samples	41_30sec	hihats
%samples	finalfantasy	cemb
%samples	ATrain	Jazz
%samples	BigYellow	Pops
%samples	FloorEssence	Techno
%samples	macabre	orch
%samples	mybloodrusts	guitar
%samples	Quizas	Latin
%samples	VelvetRealm	Techno
%samples	Amefuribana	Pops
%samples	Trust	Gospel
%samples	Waiting	Rock
%samples	Experiencia	Latin
%samples	Heart to Heart	Pops
%samples	Tom's Diner	Vocal
%samples	Reunion Blues	Jazz
%samples	French	Speech
%samples	undelete	Pops
%samples	Dimmu Borgir	Metal
%samples	Run up	Pops
%samples	German	Speech
%samples	ItCouldBeSweet	Pops
%samples	OnTheRoofWith	Pops
%samples	easy game	Pops
%samples	Tears Infection	Pops	

注:公開試聴試験での多人数の平均評点と管理人の評点が似たような傾向になることは確認しているので言えるが、ある個人がある再生環境で、ある価値観のもとに聞いたときの評価が、ここに書いた管理人の評価に似るかどうかまでは何とも言えない。また、今回利用した音源とは傾向の異なる音を多くエンコードした場合、結果や順位が異なる可能性があります。

Opus, AAC 75kbps,100kbpsの音質比較

概要

新しいOpus audio codecとAAC-LCの音質比較。
2012年9月時点で最新のtfsel5(libopus 0.9.11-146-gdc4f83b-exp_analysis)と古いバージョン(CELT)の0.11.2、AACは定評のあるAppleエンコーダーをqaac経由で、CVBRとTVBRを比較。

結果

AAC 100kbps(tvbr,cvbr) ≒ Celt 100kbps ≒ Opus 100kbps > Opus 75kbps ≒ Celt 75kbps > AAC 75kbps(tvbr,cvbr)

評価


エンコーダ Opus Celt qaac qaac Opus Celt qaac qaac
リリース年 2012 2011 2012 2012 2012 2011 2012 2012
バージョン 0.9.11 0.11.2 1.40 1.40 0.9.11 0.11.2 1.40 1.40
フォーマット Opus Opus AAC AAC Opus Opus AAC AAC
ビットレート 66k 75k 72k 27 90k 100k 96k 45
41_30sec 打楽器 3.1 3.1 2.5 2.8 3.5 3.8 3.7 3.8
finalfantasy 撥弦楽 3.8 3.0 2.7 2.8 4.1 3.8 4.0 3.9
ATrain ジャズ 2.8 2.6 3.0 3.0 3.6 3.3 4.1 3.9
BigYellow POPS 2.7 3.2 2.3 2.3 3.3 3.8 3.6 3.7
FloorEssence テクノ 4.0 3.4 2.9 2.9 4.4 3.9 3.6 3.6
macabre オケ 2.6 2.6 2.8 2.8 3.3 3.2 4.0 3.9
mybloodrusts 弦楽器 3.4 4.0 3.0 3.2 3.8 4.5 3.7 3.8
Quizas ラテン 3.5 3.5 2.9 2.8 3.8 4.1 4.1 4.2
VelvetRealm テクノ 3.0 2.7 3.6 3.5 3.3 3.5 4.0 3.8
雨降花 POPS 3.1 3.4 2.8 2.6 3.8 3.8 4.2 4.0
Trust Gosp 3.3 3.1 2.6 2.6 3.8 3.4 3.5 3.5
Waiting ロック 3.8 3.4 2.8 3.0 4.1 3.8 3.8 3.9
Experiencia ラテン 3.6 3.3 2.6 2.7 4.3 4.0 3.8 3.6
HeartToHeart POPS 3.1 3.4 2.8 2.6 3.7 3.7 3.9 3.8
Tom's Diner 女声 3.4 3.5 2.9 2.9 3.7 4.0 3.8 3.9
ReunionBlues ジャズ 3.3 3.3 2.8 2.8 3.7 3.9 3.9 3.8
French 男女声 3.6 3.8 3.3 3.3 3.6 4.0 3.7 3.7
undelete POPS 3.7 3.3 3.3 3.3 3.9 3.7 4.1 4.0
Dimmu Borgir メタル 3.1 3.6 3.2 3.0 3.7 3.8 4.1 3.9
Run up POPS 3.7 4.1 3.0 2.9 4.1 4.3 3.8 3.6
↑音源 平均点 3.31 3.30 2.88 2.87 3.76 3.79 3.85 3.81
実レート 75k 75k 77k 73k 100k 100k 102k 99k
全サイズ(KB) 4388 4403 4499 4241 5893 5878 5994 5782
エンコーダ Opus Celt qaac qaac Opus Celt qaac qaac

テストに利用した音源を試聴したい方、ダウンロードしたい方、ログを見たい方はこちらへ。
http://zak.s206.xrea.com/bitratetest/main.htm

方法

銘柄に対する先入観が影響しないように、PSP abc/hr v2.3とRP-HT560を利用して、6個の音声ファイルをランダムに並び替えて、銘柄を伏せた状態で聴いて採点した。1.0=音質劣化が非常に気になる 2.0=気になる 3.0=わずかに気になる 4.0=原音からの音質変化が分かるが、気にならない 5.0=音質変化がわからない、区別できない。4.9点以下の評点をつける場合は、ABXYテストを15回行い、12回以上(これ以上の成績をまぐれで出す確率は約2%)正解して、違いを聞き取れることを確認してからそうした。同じテストを、RP-HJE150でもう一度行い、2評点の平均をとった。
このテストでの採点は、20(音源)×8(エンコーダ)×2(回)=320(回)。

使用したオプション

opusenc --bitrate 66 input.wav output.wav
celtenc input.48k.raw --bitrate 75 --comp 10 output.wav
qaac --cvbr 72 -o output.m4a input.wav
qaac --tvbr 27 -o output.m4a input.wav
opusenc --bitrate 90 input.wav output.wav
celtenc input.48k.raw --bitrate 100 --comp 10 output.wav
qaac --cvbr 96 -o output.m4a input.wav
qaac --tvbr 45 -o output.m4a input.wav

使用したオプション(フル)

echo ===================Opus Section Start(75k)===================
bin\opus-tools_exp_tfsel5\opusenc --bitrate 66 "%InputWavFile%" "%OutputFile%%Opus75Name%"
bin\opus-tools_exp_tfsel5\opusdec "%OutputFile%%Opus75Name%" "%TemporaryFile%.o75.wav"
bin\sox "%TemporaryFile%.o75.wav" -b 32 -e float "%Opus75Decode%" gain -1 rate -v 44100

echo ===================Celt Section Start(75k)===================
bin\sox %InputWavFile% "%TemporaryFile%.48k.wav" gain -1 rate 48000 dither -s
bin\celt-0.11.2-win32\celtenc "%TemporaryFile%.48k.wav" --bitrate 75 --comp 10 "%OutputFile%%Celt75Name%"
bin\celt-0.11.2-win32\celtdec "%OutputFile%%Celt75Name%" "%TemporaryFile%.c75.wav"
bin\sox "%TemporaryFile%.c75.wav" -b 32 -e float "%Celt75Decode%" rate -v 44100

echo ===================Aac Section Start(75k)===================
bin\qaac_1.40\qaac --cvbr 72 -o "%OutputFile%%Aaccv75Name%" "%InputWavFile%"
bin\faad -b 4 -o "%Aaccv75Decode%" "%OutputFile%%Aaccv75Name%"
bin\qaac_1.40\qaac --tvbr 27 -o "%OutputFile%%Aactv75Name%" "%InputWavFile%"
bin\faad -b 4 -o "%Aactv75Decode%" "%OutputFile%%Aactv75Name%"

echo ===================Opus Section Start(100k)===================
bin\opus-tools_exp_tfsel5\opusenc --bitrate 90 "%InputWavFile%" "%OutputFile%%Opus100Name%"
bin\opus-tools_exp_tfsel5\opusdec "%OutputFile%%Opus100Name%" "%TemporaryFile%.o100.wav"
bin\sox "%TemporaryFile%.o100.wav" -b 32 -e float "%Opus100Decode%" gain -1 rate -v 44100

echo ===================Celt Section Start(100k)===================
bin\sox %InputWavFile% "%TemporaryFile%.48k.wav" gain -1 rate 48000 dither -s
bin\celt-0.11.2-win32\celtenc "%TemporaryFile%.48k.wav" --bitrate 100 --comp 10 "%OutputFile%%Celt100Name%"
bin\celt-0.11.2-win32\celtdec "%OutputFile%%Celt100Name%" "%TemporaryFile%.c100.wav"
bin\sox "%TemporaryFile%.c100.wav" -b 32 -e float "%Celt100Decode%" rate -v 44100

echo ===================Aac Section Start(100k)===================
bin\qaac_1.40\qaac --cvbr 96 -o "%OutputFile%%Aaccv100Name%" "%InputWavFile%"
bin\faad -b 4 -o "%Aaccv100Decode%" "%OutputFile%%Aaccv100Name%"
bin\qaac_1.40\qaac --tvbr 45 -o "%OutputFile%%Aactv100Name%" "%InputWavFile%"
bin\faad -b 4 -o "%Aactv100Decode%" "%OutputFile%%Aactv100Name%"

詳細な優劣の分析

FRIEDMAN version 1.24 (Jan 17, 2002) http://ff123.net/
Blocked ANOVA analysis

Number of listeners: 20
Critical significance:  0.05
Significance of data: 0.00E+000 (highly significant)
---------------------------------------------------------------
ANOVA Table for Randomized Block Designs Using Ratings

Source of         Degrees     Sum of    Mean
variation         of Freedom  squares   Square    F      p

Total              159          37.82
Testers (blocks)    19           4.43
Codecs eval'd        7          23.92    3.42   48.00  0.00E+000
Error              133           9.47    0.07
---------------------------------------------------------------
Fisher's protected LSD for ANOVA:   0.167

Means:

cvbr100k tvbr100k celt100k opus100k opus_75k celt_75k cvbr_75k tvbr_75k
  3.85     3.80     3.79     3.76     3.31     3.29     2.88     2.87

---------------------------- p-value Matrix ---------------------------

         tvbr100k celt100k opus100k opus_75k celt_75k cvbr_75k tvbr_75k
cvbr100k 0.636    0.516    0.302    0.000*   0.000*   0.000*   0.000*
tvbr100k          0.859    0.574    0.000*   0.000*   0.000*   0.000*
celt100k                   0.701    0.000*   0.000*   0.000*   0.000*
opus100k                            0.000*   0.000*   0.000*   0.000*
opus_75k                                     0.836    0.000*   0.000*
celt_75k                                              0.000*   0.000*
cvbr_75k                                                       0.953
-----------------------------------------------------------------------

cvbr100k is better than opus_75k, celt_75k, cvbr_75k, tvbr_75k
tvbr100k is better than opus_75k, celt_75k, cvbr_75k, tvbr_75k
celt100k is better than opus_75k, celt_75k, cvbr_75k, tvbr_75k
opus100k is better than opus_75k, celt_75k, cvbr_75k, tvbr_75k
opus_75k is better than cvbr_75k, tvbr_75k
celt_75k is better than cvbr_75k, tvbr_75k

整形済みデータ

% Opus, AAC 75kbps, 100kbps ABC/HR Score
opus_75k	celt_75k	cvbr_75k	tvbr_75k	opus100k	celt100k	cvbr100k	tvbr100k
%features 6 75kbps 75kbps 75kbps 75kbps 100kbps 100kbps 100kbps 100kbps
%features 7 OPUS OPUS AAC-LC AAC-LC OPUS OPUS AAC-LC AAC-LC 
3.050	3.100	2.500	2.750	3.500	3.750	3.700	3.800	
3.750	2.950	2.700	2.750	4.050	3.800	4.000	3.950	
2.800	2.550	3.000	3.000	3.600	3.250	4.050	3.900	
2.700	3.150	2.350	2.300	3.350	3.800	3.600	3.700	
4.000	3.400	2.850	2.850	4.350	3.900	3.550	3.550	
2.600	2.550	2.800	2.800	3.350	3.150	3.950	3.900	
3.400	3.950	3.000	3.200	3.850	4.500	3.700	3.800	
3.450	3.500	2.900	2.800	3.850	4.050	4.050	4.150	
2.950	2.700	3.550	3.450	3.250	3.450	4.000	3.850	
3.100	3.400	2.750	2.600	3.800	3.850	4.150	4.000	
3.350	3.100	2.600	2.600	3.750	3.400	3.450	3.500	
3.750	3.350	2.800	2.950	4.050	3.750	3.800	3.850	
3.550	3.300	2.600	2.650	4.250	3.950	3.750	3.600	
3.100	3.350	2.750	2.550	3.650	3.700	3.850	3.800	
3.400	3.450	2.900	2.900	3.650	3.950	3.750	3.900	
3.250	3.300	2.750	2.800	3.650	3.850	3.950	3.750	
3.600	3.800	3.300	3.300	3.550	4.000	3.650	3.700	
3.700	3.350	3.300	3.300	3.900	3.650	4.100	4.000	
3.100	3.600	3.150	3.000	3.700	3.800	4.100	3.850	
3.650	4.050	3.000	2.900	4.050	4.250	3.750	3.550	
続きを読む