クラウドファンディングで応援購入していた XROUND AERO 完全ワイヤレスイヤホンがおととい届いた。
昨年 9 月に購入したワイヤレスノイズキャンセリングヘッドホン WH-1000XM3
は PC に接続していて外に持ち出すことはないため、今回の AERO 完全ワイヤレスイヤホン購入によって引退する可能性があるのは
3 年近く前に購入した Jabra Elite 65t
である。
が、パッシブノイズキャンセリングや外音取込みが搭載されている Elite 65t に比べて、AERO 完全ワイヤレスイヤホンはノイズキャンセリングや外音取込みがなく超低遅延とサラウンドサウンドに特化した尖った製品なので、用途次第で併用するかもしれない。
¶ OS・コーデックと遅延の関係
AERO 完全ワイヤレスイヤホンの特徴のひとつ、超低遅延の話。
XROUND の公式ブログで、各社の完全ワイヤレスイヤホンの遅延データ実測レポートが公開されている。
これによると OS とコーデックの組合せによって遅延に差があり、AERO 完全ワイヤレスイヤホンの場合、iOS では SBC で 54.5ms、AAC で 46ms なのに対し、Android では SBC で 45.8ms、AAC で 148.9ms となっている。
iOS (iPhone) ではコーデックを意識する必要はなさそうだが、Android では SBC にしないと「超低遅延」にならない。
手元の Android スマホ Xperia 1 は AAC に対応しているため、Bluetooth 接続時のコーデックはデフォルトで AAC になる。
AAC だとアプリによっては体感でも遅延に気づく。
動画再生アプリは遅延を考慮したリップシンクに対応していることが多いため気になることはあまりないが、ゲームは基本的に素直にズレる。
そこで。
この Bluetooth デバイスの詳細の画面にある「HD オーディオ」をオフにすればコーデックが SBC に切り替わり、Android でも超低遅延になる。
シビアな音ゲーじゃなくてもこうかはばつぐん。
これなら大抵のゲームは違和感なくプレイできそうだ。
¶ Android の SBC 接続時の BitPool 値を知りたい
SBC はビットレート (BitPool 値) 次第で音質がかなり変わるコーデックだが、「HD オーディオ」をオフにするといったい BitPool 値はいくつで接続されるんだろう? というワケで、ググって見つけた確認方法を試してみたものの、確信が持てない。
Bluetooth HCI スヌープログを取得して実際に流れたデータを Wireshark で解析するのが確実だと思うが、何度か試しても肝心の SBC のデータが見れずに断念。
Android のバージョンによるのだろうか。
あとはログにそれっぽい文字が出てくるようなので、「adb logcat | sls a2dp」の実行結果を眺めながら Bluetooth を接続したりコーデックを切り替えたりしてみた (sls は PowerShell 版 grep ね)。
SBC 接続時のログを抜粋するとこんな感じ:
02-23 10:46:24.906 24624 28317 D a2dp_sbc_encoder: a2dp_sbc_encoder_update: Set flag enc_update_in_progress = 1
02-23 10:46:24.906 24624 28317 D a2dp_sbc_encoder: a2dp_sbc_encoder_update: min/max bitpool values = 2/53
02-23 10:46:24.906 24624 28317 D a2dp_sbc_encoder: a2dp_sbc_encoder_update: sample_rate=44100 bits_per_sample=16 channel_count=2
02-23 10:46:24.906 24624 28317 D a2dp_sbc_encoder: a2dp_sbc_encoder_update: MTU=667, peer_mtu=667 min_bitpool=2 max_bitpool=53
02-23 10:46:24.906 24624 28317 D a2dp_sbc_encoder: a2dp_sbc_encoder_update: ChannelMode=3, NumOfSubBands=8, NumOfBlocks=16, AllocationMethod=0, BitRate=229, SamplingFreq=44100 BitPool=53
02-23 10:46:24.906 24624 28317 D a2dp_sbc_encoder: a2dp_sbc_encoder_update: bitpool candidate: 35 (229 kbps)
02-23 10:46:24.906 24624 28317 D a2dp_sbc_encoder: a2dp_sbc_encoder_update: final bit rate 229, final bit pool 35
02-23 10:46:24.914 24624 28317 D a2dp_sbc_encoder: a2dp_sbc_encoder_update:sbc encoder update done, enc_update_in_progress = 0
ここまでのログを見ると「final bit rate 229, final bit pool 35」とあり、BitPool 値は 35 (229 kbps) を選択しているように読める。
続いて、
02-23 10:46:24.927 24624 24654 E a2dp_sbc_encoder: a2dp_sbc_calulate_offload_bitrate is peer edr = 1
02-23 10:46:24.927 24624 24654 D a2dp_sbc_encoder: a2dp_sbc_calulate_offload_bitrate: sample_rate=44100 bits_per_sample=16 channel_count=2 min_bitpool=2 max_bitpool=35
ここでも最大 35 (max_bitpool=35)。
しかしさらに続きを見ると、
02-23 10:46:24.927 24624 24654 D a2dp_sbc_encoder: a2dp_sbc_offload_source_rate
02-23 10:46:24.927 24624 24654 D a2dp_sbc_encoder: a2dp_sbc_offload_source_rate rate = 345
02-23 10:46:24.927 24624 24654 W a2dp_sbc_encoder: initial bitrate = 345
02-23 10:46:24.927 24624 24654 D a2dp_sbc_encoder: a2dp_sbc_calulate_offload_bitrate: bitpool candidate: 56 (345 kbps)
02-23 10:46:24.927 24624 24654 D a2dp_sbc_encoder: a2dp_sbc_calulate_offload_bitrate: computed bitpool too large (56)
02-23 10:46:24.927 24624 24654 D a2dp_sbc_encoder: a2dp_sbc_calulate_offload_bitrate: bitpool candidate: 55 (340 kbps)
02-23 10:46:24.927 24624 24654 D a2dp_sbc_encoder: a2dp_sbc_calulate_offload_bitrate: computed bitpool too large (55)
02-23 10:46:24.927 24624 24654 D a2dp_sbc_encoder: a2dp_sbc_calulate_offload_bitrate: bitpool candidate: 54 (335 kbps)
02-23 10:46:24.927 24624 24654 D a2dp_sbc_encoder: a2dp_sbc_calulate_offload_bitrate: computed bitpool too large (54)
02-23 10:46:24.927 24624 24654 D a2dp_sbc_encoder: a2dp_sbc_calulate_offload_bitrate: bitpool candidate: 53 (330 kbps)
02-23 10:46:24.927 24624 24654 E a2dp_sbc_encoder: offload_bitrate for sbc = 330
02-23 10:46:24.927 24624 28317 I a2dp_sbc_encoder: sbc is running in offload mode
02-23 10:46:24.927 24624 28317 I a2dp_sbc_encoder: a2dp_sbc_get_encoder_interval_ms:sbc is running in offload mode
何やらここでは 53 (330 kbps) を選択している? あれっ、一般的に 53 は 328 kbps だっけ? わけがわからないよ!
なお
12 年前の耳ではじっくり聴き比べると BitPool 値 22 と 53 の違いを感じることができたようだが、今はもうカジュアルに聴くだけなら 35 でも構わない気がしている。
超低遅延モードで (SBC コーデックで) 聴くのはゲームの音と、外出中に暫定で観る配信動画の音声くらいだろうし。
¶ XROUND AERO 完全ワイヤレスイヤホンは買いか否か
50ms 前後のとにかく超低遅延の完全ワイヤレスイヤホンが欲しいならアリ。
SpinFit コンフォートイヤーピースが付属しているのも嬉しいポイントだったりする。
ケースを開けた時点でイヤホンの電源が入り、ケースから取り出す前に Bluetooth 接続が始まるのも地味に便利。
100ms くらいの低遅延でいいからアクティブノイズキャンセリング (ANC) や外音取込み (アンビエントサウンド)、ワイヤレス充電といった最近の定番機能を備えた完全ワイヤレスイヤホンが欲しいという向きには、今なら『EarFun Free Pro』あたりがいいかもしれない。
音ゲーはともかく、普通に使う範囲なら 100ms でも充分かなと。