音風景ブログ

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

Bluetoothに登場するLC3コーデックと、AACの比較

概要

Bluetoothに登場する新しいコーデック、LC3を、従来からあるAAC二重盲検法で比較した。
2022年以降、Bluetooth 5.2という新しい規格がリリースされ、イヤホンやスピーカーと無線で接続するための新しい方法が準備される。以降のBluetooth規格では、LC3のサポートが必須となる見込み。
LC3の採用により、音声の遅延を抑えた自然な音声再生と、バッテリ消費の軽減が見込まれている。
このLC3コーデックを、Bluetoothイヤホン等で現在広く使われているAACコーデックと比較した。
LC3コーデックのエンコーダとして、欧州電気通信標準化機構(ETSI)が配布している最新版のLC3plusと、GoogleAndroid用に開発しているliblc3の2銘柄が使われた。
AACコーデックのエンコーダとして、Apple製品で採用されているCoreAudioと、Androidで採用されているFDK-AACの2銘柄が使われた。
今回はストリーミングによる音楽聴取環境を想定して、ロスレスの原音をOpusの128kbpsでエンコードし、デコードしてからLC3かAACの160kbps CBRでエンコードし、この再エンコードされた音を原音と比較した。
あくまで参考として、MP3も比較対象に加えられた。MP3は再エンコードではなく、原音から直接エンコードされた。

結果

現在Bluetoothイヤホンで広く採用されている、AACエンコーダの方がむしろ原音に近い結果となった。
AACは、再エンコードにもかかわらず両者とも平均オピニオン評点4.3点以上と高い忠実度となった。
LC3の平均オピニオン評点は4点を下回った。
AACについては、CBRを強制したAppleのCoreAudioと、FDK-AACに大きな違いは無かった。これは前回の48kHz, 144kbpsで行ったテストと同様の結果。
LC3については、欧州電気通信標準化機構(ETSI)版とGoogle版に大きな違いは無かった。
AAC, LC3のいずれも、Opusからの再エンコードにも関わらず、MP3 128kbps(CBR)よりも高い忠実度となった。

評価

全結果
テストに使われた27音源と評点一覧

テストに利用した音源を試聴したい方、ダウンロードしたい方、ログを見たい方はこちらへ。
http://zak.s206.xrea.com/bitratetest/main.htm
https://drive.google.com/file/d/0ByvUr-pp6BuUSnlwUG1WNkZzeDA/view?usp=sharing

方法

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

使用したオプション

サンプリング周波数が44.1kHzのロスレス音源からOpusへの変換(ストリーミングによる音楽聴取環境を再現するために使用)

Opusエンコードとデコードには、最新版のopus-tools-0.2-opus-1.3が使われた。
Opusをデコードした一時ファイルについては、ビット深度とサンプリング周波数を各LC3エンコーダが対応する16bitと48kHz, 44.1kHzに変換するため、qaac に同梱されている refalac の64bit版が使われた。

opusenc --bitrate 128 原音.wav 一時ファイル.opus
opusdec --float --quiet 一時ファイル.opus 一時ファイル.wav
refalac64 一時ファイル.wav --rate 48000 -D -b 16 -o 一時ファイル48kHz.wav
refalac64 一時ファイル.wav --rate 44100 -D -b 16 -o 一時ファイル44kHz.wav

AAC (Appleのエンジン)

Appleが使うエンジン CoreAudioToolbox 7.10.9.0 が qaac 2.73 (x64 version) 経由で使われた。
Bluetoothでの伝送環境を再現するため、CBRを指定して強制させた。

qaac64 --cbr 160 -o 出力.mp4 一時ファイル44kHz.wav

AAC (Androidのエンジン)

Androidで使われているFraunhofer社製のAACエンコーダ、fdk-aacが使われた。これはFAAC (libfaac) とは別物。
mstorsjo氏がメンテナンスしている、バージョン fdk-aac v2.0.2 を FFmpeg N-102573-g9d4c018497 に組み込んだ状態で使われた。このコマンドラインだけで、CBRで出力される。

ffmpeg -y -i 一時ファイル44kHz.wav -c:a libfdk_aac -b:a 160k 出力.mp4

LC3(欧州電気通信標準化機構の配布するLC3plus)

2022年4月19日時点でFraunhoferのページで紹介され、欧州電気通信標準化機構(ETSI)から配布されていた最新の、
LC3plus Floating Point Software V1.6.3ETSI, ETSI TS 103 634 V1.3.1. が使われた。
配布されていたソースコードのfloating_point版をMSYS環境でビルドしエンコードさせた。
なお2022年6月29日現時点でも同バージョンが配布されている。

LC3plus -E -q -v 一時ファイル44kHz.wav 出力.lc3 160000

LC3(Googleの開発する Google/liblc3 、Zephyr上ではliblc3codec表記)

2022年4月19日時点で配布されていたバージョンを使用。
以降、2022年6月28日までに高速化やAPIの24bit深度対応、外部モジュール化などが行われたため最新版ではない。
このGoogle/liblc3は、2022年6月29日現在もサンプリング周波数44.1kHzのwavファイルを直接入力できない。
そのため、これのみOpus-toolsのサンプリング周波数48kHz出力を44.1kHzに変換せずに48kHzのまま使った。

elc3 -b 160000 一時ファイル48kHz.wav 出力.lc3

MP3

あくまでLC3, AACとの比較参考のために使用。最新版のLAMELAME 3.100.1(64bit版)がCBRで使われた。

lame -b 128 原音.wav 出力.mp3
lame -b 64 原音.wav 出力.mp3

詳細な優劣の分析

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

Number of listeners: 27
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              161         132.90
Testers (blocks)    26           7.81
Codecs eval'd        5         114.05   22.81   268.52  0.00E+000
Error              130          11.04    0.08
---------------------------------------------------------------
Fisher's protected LSD for ANOVA:   0.157

Means:

AAC(FDK) AAC(Appl LC3plus  liblc3   LAMECBR1 LAMECBR6
  4.36     4.35     3.99     3.89     3.56     1.90  

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

         AAC(Appl LC3plus  liblc3   LAMECBR1 LAMECBR6
AAC(FDK) 0.926    0.000*   0.000*   0.000*   0.000*  
AAC(Appl          0.000*   0.000*   0.000*   0.000*  
LC3plus                    0.227    0.000*   0.000*  
liblc3                              0.000*   0.000*  
LAMECBR1                                     0.000*  
-----------------------------------------------------------------------

AAC(FDK) is better than LC3plus, liblc3, LAMECBR128kbps, LAMECBR64kbps
AAC(Apple) is better than LC3plus, liblc3, LAMECBR128kbps, LAMECBR64kbps
LC3plus is better than LAMECBR128kbps, LAMECBR64kbps
liblc3 is better than LAMECBR128kbps, LAMECBR64kbps
LAMECBR128kbps is better than LAMECBR64kbps


FRIEDMAN version 1.24 (Jan 17, 2002) http://ff123.net/
Friedman Analysis

Number of listeners: 27
Critical significance:  0.05
Significance of data: 0.00E+000 (highly significant)
Fisher's protected LSD for rank sums:  26.945

Ranksums:

AAC(Appl AAC(FDK) LC3plus  liblc3   LAMECBR1 LAMECBR6
143.00   141.00    98.00    87.00    71.00    27.00  

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

         AAC(FDK) LC3plus  liblc3   LAMECBR1 LAMECBR6
AAC(Appl 0.884    0.001*   0.000*   0.000*   0.000*  
AAC(FDK)          0.002*   0.000*   0.000*   0.000*  
LC3plus                    0.424    0.050*   0.000*  
liblc3                              0.244    0.000*  
LAMECBR1                                     0.001*  
-----------------------------------------------------------------------

AAC(Apple) is better than LC3plus, liblc3, LAMECBR128kbps, LAMECBR64kbps
AAC(FDK) is better than LC3plus, liblc3, LAMECBR128kbps, LAMECBR64kbps
LC3plus is better than LAMECBR128kbps, LAMECBR64kbps
liblc3 is better than LAMECBR64kbps
LAMECBR128kbps is better than LAMECBR64kbps

整形済みデータ

CoreAudio	FDK-AAC	LC3plus	Google / liblc3	LAME	LAME
%feature	5	Opus ⇒ AAC	Opus ⇒ AAC	Opus ⇒ LC3	Opus ⇒ LC3
%feature	7	   	 	  	 	MP3	MP3
%feature	10	CoreAudioToolbox 7.10.9.0, via qaac 2.73	FDK-AAC v2.0.2	V1.6.3 ETSI (floating point ver.)	liblc3 Apr 19, 2022	LAME 3.100.1-x64	LAME 3.100.1-x64
%feature	11	--cbr 160	-c:a libfdk_aac -b:a 160k	160000	-b 160000	-b 128 (CBR 128kbps)	-b 64 (CBR 64kbps)
%feature	12	Opus 128kbpsから再エンコード	Opus 128kbpsから再エンコード	Opus 128kbpsから再エンコード	Opus 128kbpsから再エンコード	原音から直接エンコード	原音から直接エンコード
%genre 15個のテスト音源
4.300	4.400	4.100	3.700	3.200	1.800	
4.700	4.500	4.200	3.700	4.100	1.700	
4.500	4.300	3.900	4.100	4.400	1.600	
4.500	4.400	4.100	3.900	3.700	2.100	
3.800	4.100	3.500	3.600	2.500	1.700	
4.300	4.200	3.700	3.400	3.800	1.700	
4.400	4.500	4.100	3.900	2.900	2.400	
4.400	4.500	3.600	4.100	3.900	1.700	
3.900	3.800	4.300	4.400	4.100	2.700	
4.500	4.400	3.900	3.500	3.600	1.800	
4.400	4.300	4.100	4.200	3.100	1.600	
4.200	4.100	3.900	3.700	3.300	2.200	
4.400	4.500	3.800	3.700	3.600	1.700	
4.200	4.400	3.900	3.800	3.600	1.600	
4.400	4.300	3.600	3.700	4.100	1.800		
%genre IgorC氏による12個のテスト音源
4.400	4.500	4.100	4.000	2.700	1.800	
4.100	4.400	4.600	4.500	3.600	1.600	
4.600	4.500	4.100	4.200	3.200	1.700	
4.300	4.400	3.900	3.800	3.600	1.900	
4.500	4.200	4.400	3.800	3.600	1.900	
4.300	4.200	3.800	3.700	3.200	2.100	
3.900	3.700	3.400	3.500	2.800	1.600	
4.100	4.400	3.900	4.300	2.600	1.900	
4.500	4.600	3.900	3.700	4.100	2.100	
4.200	4.300	3.800	3.500	4.100	2.200	
5.000	4.800	4.700	4.400	4.500	2.300	
4.700	5.000	4.400	4.300	4.100	2.200	

%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	Heart to Heart	Pops
%samples	Tom's Diner	Acappella

%samples	01 castanets	inst.
%samples	02 fatboy_30sec	Techno
%samples	03 eig	Techno
%samples	04 Bachpsichord	inst.
%samples	05 Enola	Techno
%samples	06 trumpet	inst.
%samples	07 applaud	Live
%samples	08 velvet	perc.
%samples	09 Linchpin	Rock
%samples	10 spill_the_blood	guitar
%samples	11 female_speech	Speech
%samples	12 French_Ad	Speech
%bitrate
162387	161978	161014	161659	128285	64154
162562	162020	160979	161667	128230	64196
162879	162365	160984	161655	128372	64266
162679	162084	161015	161646	128319	64214
162749	162340	160981	161652	128368	64267
162989	162338	160987	161719	128440	64278
162974	162222	161016	161679	128458	64286
162331	162011	160989	161658	128271	64202
163932	163180	161141	161773	128827	64534
162628	162092	160980	161683	128295	64199
162327	161897	161024	161667	128244	64205
163037	162391	161182	161834	128553	64319
162736	162244	161050	161634	128353	64260
162391	162100	160983	161628	128304	64185
162832	162343	161019	161702	128470	64276
165547	163738	161116	161762	129023	64827
162311	161976	161009	161624	128336	64161
163482	162617	161070	161709	128613	64406
162476	162136	160979	161669	128396	64204
162317	162027	161015	161648	128300	64203
164590	163095	161051	161759	128666	64466
165505	163638	161164	161773	128851	64589
164116	162966	161075	161768	128639	64396
163213	162632	161036	161696	128588	64332
162477	162004	161025	161649	128264	64195
162842	162243	160988	161630	128432	64282
163657	162689	161047	161716	128663	64396


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