BluetoothヘッドホンのMDR-EX31BNを使って、apt-XとSBCのスペクトル分析を行いました。
AndroidスマートフォンのLGL22とWX04SHを使いました。
各スマートフォンとMDR-EX31BNをBluetoothで接続し、MDR-EX31BNをPCのLineInに繋げて48kHzで録音しました。
※MDR-EX31BNに変なものが付いてますが、それはまた今度w
使用したA2DPコーデックは、apt-XとSBCです。MDR-EX31BNには音質優先モードと接続優先モード(低音質)がありますので、それらも比較しました。
また比較対象として、スマートフォンとLineIn直結して録音した音声もスペクトル分析しました。
サンプルは前回と同じく、loop022.wavです(©bebeto 2006 CCライセンス)。
このWaveファイルをそのまま再生した場合と、AAC 111kbpsでエンコードしたファイルを再生した場合も比較しました。
なお再生アプリはGoogle Musicを使用しています。イコライザはもちろんオフです。
スペクトル画像の比較ページを用意しました。
http://blog.afnf.net/blog_20150628/24k/_apt-x_vs_sbc.html (0kHz-24kHz)
http://blog.afnf.net/blog_20150628/3k/_apt-x_vs_sbc.html (0kHz-3kHzのみを表示)
生のWaveデータをここに置きました。47MBです。
これはRstream-A1で調べたのですが、音質優先モードのbitpool値は53(おそらく325kbps付近)でした。
06-28 15:56:09.250 1214 2650 W A2DP : bluetooth_configure
06-28 15:56:09.260 1214 2650 W A2DP : Received BT_RESPONSE - BT_GET_CAPABILITIES
06-28 15:56:09.260 1214 2650 W A2DP : Received BT_RESPONSE - BT_OPEN
06-28 15:56:09.260 1214 2650 W A2DP : bluetooth_a2dp_hw_params sending configuration:
06-28 15:56:09.260 1214 2650 W A2DP : channel_mode: JOINT STEREO
06-28 15:56:09.260 1214 2650 W A2DP : frequency: 44100
06-28 15:56:09.260 1214 2650 W A2DP : allocation_method: LOUDNESS
06-28 15:56:09.260 1214 2650 W A2DP : subbands: 8
06-28 15:56:09.260 1214 2650 W A2DP : block_length: 16
06-28 15:56:09.260 1214 2650 W A2DP : min_bitpool: 2
06-28 15:56:09.260 1214 2650 W A2DP : max_bitpool: 53
06-28 15:56:09.260 1214 2650 W A2DP : Received BT_RESPONSE - BT_SET_CONFIGURATION
06-28 15:56:09.260 1214 2650 W A2DP : MTU: 895 -- SCMS-T Enabled: 3329
06-28 15:56:09.260 1214 2650 W A2DP : frame_duration: 2902 us
06-28 15:56:09.260 1214 2650 W A2DP : allocation=0
06-28 15:56:09.260 1214 2650 W A2DP : subbands=1
06-28 15:56:09.260 1214 2650 W A2DP : blocks=3
06-28 15:56:09.260 1214 2650 W A2DP : bitpool=53
06-28 15:56:09.260 1214 2650 W A2DP : bluetooth_start
06-28 15:56:09.300 1214 2650 W A2DP : Received BT_RESPONSE - BT_START_STREAM
06-28 15:56:09.300 1214 2650 W A2DP : Received BT_RESPONSE - BT_NEW_STREAM
接続優先モードのbitpool値は35(おそらく225kbps付近)でした。
06-28 15:54:33.770 1214 2317 W A2DP : bluetooth_configure
06-28 15:54:33.800 1214 2317 W A2DP : Received BT_RESPONSE - BT_GET_CAPABILITIES
06-28 15:54:33.800 1214 2317 W A2DP : Received BT_RESPONSE - BT_OPEN
06-28 15:54:33.800 1214 2317 W A2DP : bluetooth_a2dp_hw_params sending configuration:
06-28 15:54:33.800 1214 2317 W A2DP : channel_mode: JOINT STEREO
06-28 15:54:33.800 1214 2317 W A2DP : frequency: 44100
06-28 15:54:33.800 1214 2317 W A2DP : allocation_method: LOUDNESS
06-28 15:54:33.800 1214 2317 W A2DP : subbands: 8
06-28 15:54:33.800 1214 2317 W A2DP : block_length: 16
06-28 15:54:33.800 1214 2317 W A2DP : min_bitpool: 2
06-28 15:54:33.800 1214 2317 W A2DP : max_bitpool: 35
06-28 15:54:33.800 1214 2317 W A2DP : Received BT_RESPONSE - BT_SET_CONFIGURATION
06-28 15:54:33.800 1214 2317 W A2DP : MTU: 895 -- SCMS-T Enabled: 3329
06-28 15:54:33.800 1214 2317 W A2DP : frame_duration: 2902 us
06-28 15:54:33.800 1214 2317 W A2DP : allocation=0
06-28 15:54:33.800 1214 2317 W A2DP : subbands=1
06-28 15:54:33.800 1214 2317 W A2DP : blocks=3
06-28 15:54:33.800 1214 2317 W A2DP : bitpool=35
06-28 15:54:33.800 1214 2317 W A2DP : bluetooth_start
06-28 15:54:33.910 1214 2317 W A2DP : Received BT_RESPONSE - BT_START_STREAM
06-28 15:54:33.910 1214 2317 W A2DP : Received BT_RESPONSE - BT_NEW_STREAM
24kHz版のLGL22 AACを見るとすぐ分かると思いますが、特にLineInで、オリジナルよりも高い周波数が出てしまっています。おそらく、高域補間がされているのだと思います。
さらにひどい例が以下です。以下のスペクトルは、LGL22においてMP3 96kbps(15kHzのローパスフィルタが適用される)を再生してLineIn録音したものです。
本来なら15kHz以上にパターンが出てはいけないのですが、LGL22の場合、15kHz~17kHzでパターンが消え、17kHz以降でパターンが復活しています。
LGL22の結果を見る場合は、高域補間がなされていることも考慮する必要があります。
24kHz版のWX04SH AACの結果が分かりやすいので、以下に抜粋します。
オリジナルは17kHzでローパスフィルタがかかっていますが、apt-Xは20kHz付近まで伸びています。SBCは割合忠実です。
スマートフォンによって若干違うのですが、下図青枠で囲ったとおり、SBCの5.5kHz~6kHzにノイズが乗っています。
前回調べたsbcenc/sbcdecコマンドでも同様だったので、コーデックに問題があるのかもしれません。
色々書いたのですが、私が聞き分けられたのはSBC-HiとSBC-Lowの違いだけでした。
生のWaveデータをダウンロードして聞いてみて下さい。